弹簧引导入门之消息中间件的使用

  

  

在消息中间件中有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=/测试

弹簧引导入门之消息中间件的使用