摘要
看完本文你将掌握如下知识点:
引入依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency>
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-pool</artifactId> </dependency>
<dependency> <groupId>org.messaginghub</groupId> <artifactId>pooled-jms</artifactId> <version>1.0.3</version> </dependency>
|
配置文件
1 2 3 4 5 6 7
| spring.activemq.broker-url=tcp://localhost:61616 spring.activemq.user=admin spring.activemq.password=admin
spring.activemq.pool.enabled=true
spring.activemq.pool.max-connections=100
|
配置类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| @Configuration @EnableJms public class ActiveMqConfig {
@Bean("jmsTopicListenerContainerFactory") public JmsListenerContainerFactory jmsTopicListenerContainerFactory( ConnectionFactory connectionFactory ){ DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); factory.setPubSubDomain(true); return factory; }
@Bean("springboot.queue") public Queue queue() { return new ActiveMQQueue("springboot.queue") ; }
@Bean("springboot.topic") public Topic topic() { return new ActiveMQTopic("springboot.topic") ; }
@Bean("springboot.queuereply") public Queue queuereply() { return new ActiveMQQueue("springboot.queuereply") ; }
}
|
消费者
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| @Component public class Consumer { @JmsListener(destination="springboot.queue.a") public void receiveQueueA(String text){ System.out.println(this.getClass().getName()+ "收到的报文为:"+text); }
@JmsListener(destination="springboot.*.b") public void receiveQueueB(String text){ System.out.println(this.getClass().getName()+ "收到的报文为:"+text); }
@JmsListener(destination="springboot.>") public void receiveQueueAll(String text){ System.out.println(this.getClass().getName()+ "收到的报文为:"+text); }
@JmsListener(destination = "springboot.topic", containerFactory = "jmsTopicListenerContainerFactory" ) public void receiveTopic(String text) { System.out.println(this.getClass().getName()+" 收到的报文为:"+text); }
@JmsListener(destination="springboot.queuereply") @SendTo("out.replyTo.queue") public String receiveQueueReply(String text){ System.out.println(this.getClass().getName()+ "收到的报文为:"+text); return "out.replyTo.queue receiveQueueReply"; }
}
|
生产者
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| @Component public class Producer {
@Resource("springboot.queue.a") private Queue queuea;
@Resource("springboot.queue.b") private Queue queueb;
@Resource("springboot.topic") private Topic topic;
@Resource("springboot.queuereply") private Queue queuereply;
@Autowired private JmsMessagingTemplate jmsTemplate;
public void sendMessage(Destination destination, final String message){ jmsTemplate.convertAndSend(destination, message); }
public void sendQueueAMessage(final String message){ sendMessage(queuea, message); }
public void sendQueueBMessage(final String message){ sendMessage(queueb, message); }
public void sendTopicMessage(final String message){ sendMessage(topic, message); }
public void sendQueueMessageReply(final String message){ sendMessage(queuereply, message); }
@JmsListener(destination = "out.replyTo.queue") public void consumerMessage(String text){ System.out.println("从out.replyTo.queue收到报文"+text); } }
|
---------------- The End ----------------
分享到: