activemq安装
下载
点击下载
解压启动
1
| tar -zxvf apache-activemq-5.14.0-bin.tar.gz
|
进去bin目录 cd apache-activemq-5.14.0/bin 启动 ./activemq start
打开web管理页面
访问http://IP:8161/admin
启动后,activeMQ会占用两个端口,一个是负责接收发送消息的tcp端口:61616,一个是基于web负责用户界面化管理的端口:8161。这两个端口可以在conf下面的xml中找到。http服务器使用了jetty
项目集成activemq
配置文件设置application.properties
1 2 3 4
| spring.activemq.broker-url=tcp://localhost:61616 spring.activemq.user=admin spring.activemq.password=admin spring.activemq.pool.enabled=false
|
生产者
1 2 3 4 5 6 7 8 9 10 11
| @Service public class Producer { @Resource private JmsMessagingTemplate jmsMessagingTemplate;
public void sendMsg(String destName, String message) { Destination destination = new ActiveMQQueue(destName); jmsMessagingTemplate.convertAndSend(destination, message); } }
|
消费者
1 2 3 4 5 6 7
| @Service public class Consumer { @JmsListener(destination = "test.queue") public void receiveMsg(String text) { System.out.println(">>>>->>>收到消息:" + text); } }
|
发布者
1 2 3 4 5 6 7 8 9 10 11
| @Service public class Publisher { @Resource private JmsMessagingTemplate jmsMessagingTemplate;
public void publish(String destName, String message) { Destination destination = new ActiveMQTopic(destName);
jmsMessagingTemplate.convertAndSend(destination, message); } }
|
订阅者
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| @Service public class Subscriber { @JmsListener(destination = "test.topic", containerFactory = "myJmsContainerFactory") public void subscribe(String text) { System.out.println("===<<<<收到订阅消息:" + text); }
@Bean JmsListenerContainerFactory myJmsContainerFactory(ConnectionFactory connectionFactory) { SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); factory.setPubSubDomain(true); return factory; } }
|
在pub/sub模式中,对消息的监听需要对containerFactory的配置
代码参考github地址