`
hpgary
  • 浏览: 82080 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Activemq 消息服务

 
阅读更多

1、简介

ActiveMQ 自己看百科

2、下载安装

 去 apache 官网下载,http://archive.apache.org/dist/activemq/ 

3、安装

a、解压

tar -xvf apache-activemq-5.14.4-bin.tar.gz

 b、拷贝到/usr/local下

mv apache-activemq-5.14.4 /usr/local/activemq

 c、启动

bin/activemq start

 d、启动后可以通过8161端口访问

http://10.0.0.12:8161

 e、设置访问账号密码:

在 conf/activemq.xml 中的 broker 节点中加入如下代码,设置消息的发送接收账号密码:

<plugins>
  <simpleAuthenticationPlugin>
      <users>
                           <authenticationUser username="manager" password="123456" groups="users,admins"/>
      </users>
   </simpleAuthenticationPlugin>
 </plugins>

 在 conf/jetty.xml 文件中找到bean 的name为 securityConstraint的修改为如下内容:

   <bean id="securityConstraint" class="org.eclipse.jetty.util.security.Constraint">
        <property name="name" value="BASIC" />
        <property name="roles" value="admin" />
        <property name="authenticate" value="true" />
    </bean>

 在文件conf/jetty-realm.properties中设置网页登录的账号密码

# 账号: 密码,[角色,角色]
admin: 123456, admin

 设置完成后,打开d步骤的地址,提示输入会提示输入账号密码

 

4、Activemq持久化到mysql数据库

修改配置文件conf/activemq.xml,找到 persistenceAdapter 节点,修改为如下内容

 <persistenceAdapter>
          <jdbcPersistenceAdapter   dataSource="#mysql-ds"/>
      </persistenceAdapter>

 在该文件的beans节点加如下配置  就是spring xml方式配置一个 数据库链接

 <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
      <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
      <property name="url" value="jdbc:mysql://127.0.0.1/test"/>
      <property name="username" value="root"/>
      <property name="password" value="123456"/>
      <property name="maxActive" value="200"/>
      <property name="poolPreparedStatements" value="true"/>
     </bean>

 5、java代码链接

	protected ActiveMQConnectionFactory connectionFactory =
			new  ActiveMQConnectionFactory("manager" , "123456" , "tcp://10.0.0.12:61616"); 
	
	@Test
	public void testSend()throws Exception{ 
		try {
			Connection conn = connectionFactory.createConnection();
			conn.start();
			Session session = conn.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
			Queue destination = session.createQueue("FirstQueue");
			MessageProducer producer = session.createProducer(destination);
			producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
			for(int x=0;x<10;x++){
				TextMessage textMessage = session.createTextMessage("ActiveMq 发送的消息" + x); 
				producer.send( textMessage ); 
				session.commit();
			}
			conn.close();
		} catch (Exception e) {
			e.printStackTrace(); 
		}
	}
	@Test
	public void testReceiver()throws Exception{
		Connection conn = connectionFactory.createConnection();
		conn.start();
		Session session = conn.createSession(Boolean.FALSE,
                Session.AUTO_ACKNOWLEDGE);
		Queue destination = session.createQueue("FirstQueue");
		MessageConsumer consumer = session.createConsumer(destination); 
		
		 while (true) {
             //设置接收者接收消息的时间,为了便于测试,这里谁定为100s
             TextMessage message = (TextMessage) consumer.receive(100000);
             if (null != message) {
                 System.out.println("收到消息" + message.getText());
             } else {
                 break;
             }
         }
	}

a、在application.properties文件中加入activemq的配置

spring.activemq.user=manager
spring.activemq.password=123456
spring.activemq.brokerUrl=tcp://10.0.0.12:61616

  

b、spring boot + activemq 创建监听类

import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

public class ConsumerMessageListener implements MessageListener {

	@Override
	public void onMessage(Message message) {
		
		TextMessage textMessage = (TextMessage) message;
		
		try {
			System.out.println( textMessage.getText());
		} catch (Exception e) {
			e.printStackTrace(); 
		}
		
	}
	
}

 定义bean DefaultMessageListenerContainer

	@Bean
	@Autowired
	public DefaultMessageListenerContainer container(ConnectionFactory connectionFactory
			){
		DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
		container.setConnectionFactory(connectionFactory);
		container.setDestination(new ActiveMQQueue("default_queue")); 
		container.setMessageListener(new ConsumerMessageListener()); 
		container.setConcurrentConsumers(2);
		container.setConcurrency( "2-5" );
		return container ;
	}

 使用JmsTemplate发送消息

@Autowired
	private JmsTemplate jmsTemplate;


Map<String, Object> map = new HashMap<String, Object>();
map.put("userid", "1");
map.put("username", "admin");
final String mapStr = JSON.toJSONString(map); 
jmsTemplate.send(destination, new MessageCreator() {
@Override
  public Message createMessage(Session session) throws JMSException {
    TextMessage textMessage = session.createTextMessage(mapStr);
    return textMessage;
  }
});

 

c、发布topic

ActiveMQTopic activeMQTopic = new ActiveMQTopic("topic001");
		    
		    jmsTemplate.send(activeMQTopic, new MessageCreator(){
		    	@Override
		    	public Message createMessage(Session session) throws JMSException {
		    		 return session.createTextMessage("你好");
		    	}
		    });

 d、订阅topic

@Bean
	@Autowired
	public DefaultMessageListenerContainer container2(ConnectionFactory connectionFactory
			){
		DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
		container.setConnectionFactory(connectionFactory);
		container.setDestination(new ActiveMQTopic("topic001")); 
		container.setMessageListener(new ConsumerMessageListener()); 
		container.setConcurrentConsumers(1);
		container.setConcurrency( "1" );
		return container ;
	}

 

分享到:
评论

相关推荐

    ActiveMQ消息服务器 v5.17.6.zip

    《ActiveMQ消息服务器详解》 Apache ActiveMQ是业界广泛使用的开源消息代理,它遵循Java Message Service(JMS)规范,提供了可靠的消息传递服务。ActiveMQ v5.17.6是该服务器的一个稳定版本,包含了丰富的功能和...

    ActiveMQ消息服务器 v5.18.3.zip

    **ActiveMQ消息服务器 v5.18.3** Apache ActiveMQ是开源的、基于Java的消息传递平台,它作为企业级消息中间件(Message Broker)在IT行业中扮演着关键角色。ActiveMQ提供了高度可靠的消息传递服务,支持多种消息...

    ActiveMQ消息服务配置

    ### ActiveMQ消息服务配置详解 #### 一、ActiveMQ配置概览 ActiveMQ是一款非常流行的开源消息中间件,它基于Java开发,支持多种消息传递模式,如点对点(P2P)、发布/订阅(Pub/Sub)等。本文将详细介绍ActiveMQ的配置...

    archive_ ActiveMQ消息服务器 v5.17.5 [江西新余电信].zip.zip

    在标题中提到的"archive_ ActiveMQ消息服务器 v5.17.5 [江西新余电信].zip.zip",我们可以推断这可能是一个包含ActiveMQ服务器版本5.17.5的归档文件,源自江西新余电信的服务器。这个压缩包很可能包含了运行和配置...

    archive_ ActiveMQ消息服务器 v5.18.2 [江西新余电信].zip.zip

    要使用这个压缩包,首先需要解压"ActiveMQ消息服务器 v5.18.2 [江西新余电信].zip"文件,然后根据提供的文档和示例配置启动服务器。一旦服务器运行,就可以通过输出.txt文件中可能记录的日志信息来监控服务器状态,...

    ActiveMQ消息服务器 v6.0.1.zip

    ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循开放消息传递标准(JMS,Java Message Service),用于在分布式系统中实现可靠的消息传递。在本文中,我们将深入探讨ActiveMQ v6.0.1的核心特性、应用...

    ActiveMQ消息服务器.rar

    1.ActiveMQ消息队列中间件 1.1.什么是ActiveMQ ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,...

    ActiveMQ消息服务器 v5.16.0

    为您提供ActiveMQ消息服务器下载,ActiveMQ是Apache出品的开源消息总线。ActiveMQ是一个完全支持JMS1.1和J2EE 1.4规范的JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演...

    Docker学习之搭建ActiveMQ消息服务的方法步骤

    主要介绍了Docker学习之搭建ActiveMQ消息服务的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    使用WebSocket协议接收ActiveMQ消息

    ActiveMQ,作为一款流行的开源消息中间件,也支持WebSocket协议,使得客户端可以通过WebSocket接口来接收和发送消息。 ActiveMQ是Apache软件基金会开发的消息队列产品,它遵循开放标准,如JMS(Java Message ...

    7道消息队列ActiveMQ面试题!

    ActiveMQ是一款非常流行的开源消息队列中间件,它实现了JMS(Java Message Service,Java消息服务)1.1规范,面向消息的中间件(Message Oriented Middleware,MOM)是指利用高效可靠的消息传递机制进行与平台无关的...

    ActiveMQ消息队列主题订阅Spring整合

    通过以上步骤,你可以成功地将ActiveMQ消息队列与Spring框架整合,实现基于主题订阅的消息传递。这种整合有助于解耦系统组件,提高系统的可扩展性和容错性,同时也简化了并发和负载均衡的实现。在实际项目中,还可以...

    Spring+ActiveMQ消息队列+前台接收消息

    在本教程中,我们将探讨如何整合Spring框架与ActiveMQ消息队列,实现前后台的消息传递。这有助于提升系统的可扩展性和响应速度,降低不同组件之间的耦合度。 首先,Spring框架是Java企业级应用开发的事实标准,它...

    ActiveMQ消息总线介绍

    ### ActiveMQ消息总线介绍 #### 一、消息中间件(Message-Oriented Middleware, MOM)概述 消息中间件是一种软件技术,它通过在不同系统之间传输和分发消息来连接网络中的独立系统。这种技术的核心是围绕一个队列...

    SpringBoot快速玩转ActiveMQ消息队列

    例如,创建一个服务类,其中包含一个方法用于发送消息: ```java @Autowired private JmsMessagingTemplate jmsMessagingTemplate; public void sendMessage(String message) { jmsMessagingTemplate....

    activemq消息持久化所需Jar包

    本主题主要围绕“activemq消息持久化所需Jar包”展开,将深入探讨ActiveMQ的消息持久化机制及其相关依赖。 首先,了解消息持久化的概念至关重要。在分布式系统中,消息持久化是指当消息代理(如ActiveMQ)接收到...

    activeMQ收发工具.rar

    ActiveMQ收发工具的核心功能是通过Java应用程序发送和接收ActiveMQ消息。这个jar包简化了对ActiveMQ服务器的交互过程,使得开发者无需编写复杂的代码就能进行消息传递的测试和调试。通过在命令行中执行`java -jar ...

    ActiveMQ消息中间件面试专题1

    【ActiveMQ消息中间件面试专题】深入解析 1. 什么是 ActiveMQ? ActiveMQ 是一个开源的、基于 Java 的消息中间件(MOM),它遵循 JMS 1.1 规范,为开发者提供了高效、可扩展、稳定和安全的企业级消息通信能力。通过...

    ActiveMQ消息中间件面试题.pdf

    ### ActiveMQ消息中间件知识点详解 #### 一、ActiveMQ简介 **ActiveMQ**是一款流行的开源消息中间件,它遵循JMS(Java消息服务)1.1标准,为应用程序提供了高效、可扩展、稳定和安全的企业级消息通信能力。作为一款...

    ActiveMQ 消息队列

    ActiveMQ遵循Java Message Service (JMS) 1.1 和 Java 2 Platform, Enterprise Edition (J2EE) 1.4 规范,为开发者提供了高效稳定的消息传输服务。 #### 二、ActiveMQ的核心特点 1. **多语言和跨平台支持**:除了...

Global site tag (gtag.js) - Google Analytics