在消息中间件中有2个重要的概念:消息代理和目的地。当消息发送者发送消息后,消息就被消息代理接管,消息代理保证消息传递到指定目的地。
我们常用的消息代理有JMS和AMQP规范。对应地,它们常见的实现分别是ActiveMQ和RabbitMQ。
2.1添加依赖
& lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-activemq & lt;/dependency> & lt; !——如果需要配置连接池,添加如下依赖——比; & lt; dependency> & lt; groupId> org.apache.activemq & lt; artifactId> activemq-pool & lt;/dependency>
2.2添加配置
# activemq配置 spring.activemq.broker-url=tcp://192.168.2.12:61616 spring.activemq.user=admin spring.activemq.password=admin spring.activemq.pool.enabled=false spring.activemq.pool.max-connections=50 #使用发布/订阅模式时,下边配置需要设置成正确的 spring.jms.pub-sub-domain=false
此处spring.activemq.pool.enabled=false,表示关闭连接池。
2.3编码
配置类:
@ configuration 公开课JmsConfirguration { 公共静态最终字符串QUEUE_NAME=癮ctivemq_queue”; 公共静态最终字符串TOPIC_NAME=癮ctivemq_topic”; @ bean 公共队列的队列(){ 返回新ActiveMQQueue (QUEUE_NAME); } @ bean 公共话题的话题(){ 返回新ActiveMQTopic (TOPIC_NAME); } } >之前负责创建队列和主题。
消息生产者:
@ component 公开课与JmsSender { @ autowired 私有队列的队列; @ autowired 私人话题的话题; @ autowired 私人JmsMessagingTemplate jmsTemplate; 公共空间sendByQueue(字符串消息){ this.jmsTemplate。convertAndSend(队列、消息); } 公共空间sendByTopic(字符串消息){ this.jmsTemplate。convertAndSend(主题、消息); } } >之前消息消费者:
@ component 公开课JmsReceiver { @JmsListener(目的地=JmsConfirguration.QUEUE_NAME) 公共空间receiveByQueue(字符串消息){ system . out。println(“接收队列消息:“+消息); } @JmsListener(目的地=JmsConfirguration.TOPIC_NAME) 公共空间receiveByTopic(字符串消息){ system . out。println(“接收主题消息:“+消息); } } >之前消息消费者使用@JmsListener注解监听消息。
2.4测试
@RunWith (SpringRunner.class) @SpringBootTest 公开课JmsTest { @ autowired 私人与JmsSender发送者; @Test 公共空间testSendByQueue () { for (int i=1;我& lt;6;我+ +){ this.sender。sendByQueue(“你好activemq队列”+ i); } } @Test 公共空间testSendByTopic () { for (int i=1;我& lt;6;我+ +){ this.sender。sendByTopic(“你好activemq主题”+ i); } } } >之前打印结果:
接收队列消息:你好activemq队列1
引用>
接收队列消息:你好activemq队列2
接收队列消息:你好activemq队列3
接收队列消息:你好activemq队列4
接收队列消息:你好activemq队列5
测试发布/订阅模式时,设置spring.jms.pub-sub-domain=true
接收主题消息:你好activemq话题1
引用>
接收主题消息:你好activemq话题2
接收主题消息:你好activemq主题3
接收主题消息:你好activemq话题4
接收主题消息:你好activemq话题5
3.1添加依赖
& lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-amqp & lt;/dependency>3.2添加配置
spring.rabbitmq.host=192.168.2.30 spring.rabbitmq.port=5672 spring.rabbitmq.username=光 spring.rabbitmq.password=光 spring.rabbitmq.virtual-host=/测试弹簧引导入门之消息中间件的使用