spring boot ActiveMQ 支持topic跟队列
spring boot ActiveMQ 支持topic和队列
spring boot ActiveMQ 支持topic和队列
1、mq 配置
1、mq 消费者
2、生成者
spring boot ActiveMQ 支持topic和队列
1、mq 配置
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jms.annotation.EnableJms; import org.springframework.jms.config.DefaultJmsListenerContainerFactory; import org.springframework.jms.config.JmsListenerContainerFactory; import org.springframework.jms.core.JmsMessagingTemplate; import javax.jms.ConnectionFactory; @Configuration @EnableJms public class MqConfig { @SuppressWarnings("SpringJavaAutowiringInspection") //加这个注解让IDE 不报: Could not autowire @Autowired private ConnectionFactory connectionFactory; @Bean public JmsListenerContainerFactory<?> jmsListenerContainerTopic( ) { DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory(); bean.setPubSubDomain(true); bean.setConnectionFactory(connectionFactory); return bean; } @Bean public JmsListenerContainerFactory<?> jmsListenerContainerQueue( ) { DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory(); bean.setConnectionFactory(connectionFactory); return bean; } @Bean public JmsMessagingTemplate jmsMessagingTemplate( ){ return new JmsMessagingTemplate(connectionFactory); }
1、mq 消费者
@JmsListener(destination = "test.queue", containerFactory = "jmsListenerContainerQueue") public void receiveQueueTest(String text) { log.info("receiveQueueTest->"+text); System.out.println("receiveQueueTestConsumer收到的报文为:"+text); } @JmsListener(destination = "test.topic",containerFactory = "jmsListenerContainerTopic") public void receiveTopicTest(String text) { log.info("receiveTopicTest->"+text); System.out.println("receiveQueueTestConsumer收到的报文为:"+text); }
2、生成者
@Service("producer") public class MqProducer { @Autowired // 也可以注入JmsTemplate,JmsMessagingTemplate对JmsTemplate进行了封装 private JmsMessagingTemplate jmsMessagingTemplate; @Autowired private JmsTemplate jmsTemplate; // 发送消息,destination是发送到的队列,message是待发送的消息 public void sendMessage(final String destination, final String message) { jmsMessagingTemplate.convertAndSend(destination, message); } public void sendMessageQueue(final String queue, final String message) { Destination destination = new ActiveMQQueue(queue); jmsMessagingTemplate.convertAndSend(destination, message); // jmsTemplate.send(destination, new MessageCreator() { // // public Message createMessage(Session session) throws JMSException { //// ObjectMessage objMessage = session.createObjectMessage(message); // TextMessage textMessage = session.createTextMessage(message); // return textMessage; // } // // }); } public void sendMessageTopic(final String topic, final String message) { Destination destination = new ActiveMQTopic(topic); jmsMessagingTemplate.convertAndSend(destination,message); // jmsTemplate.send(destination, new MessageCreator() { // public Message createMessage(Session session) throws JMSException { //// ObjectMessage objMessage = session.createObjectMessage(message); //// return objMessage; // TextMessage textMessage = session.createTextMessage(message); // return textMessage; // } // }); } }