springboot-activmq
消息订阅配置(一对多)
1.生产者配置
package com.springboot.config; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.command.ActiveMQTopic; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jms.core.JmsTemplate; @Configuration public class MqPConfig { @Bean public ActiveMQConnectionFactory activeMQConnectionFactory() { ActiveMQConnectionFactory a = new ActiveMQConnectionFactory(); a.setBrokerURL("failover:(tcp://127.0.0.1:61616)"); a.setUseAsyncSend(true); a.setClientID("providerClienctConnect"); return a; } @Bean public ActiveMQTopic activeMQTopic() { ActiveMQTopic a = new ActiveMQTopic("testSpringTopic"); return a; } @Bean public JmsTemplate jmsTemplate(ActiveMQConnectionFactory factory, ActiveMQTopic topic) { JmsTemplate j = new JmsTemplate(); j.setConnectionFactory(factory); j.setDefaultDestination(topic); j.setPubSubDomain(true); j.setReceiveTimeout(10000); j.setExplicitQosEnabled(true); j.setDeliveryMode(1); return j; } }
2.消费者配置
package com.springboot.config; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.command.ActiveMQTopic; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jms.listener.DefaultMessageListenerContainer; @Configuration public class MqCConfig { @Bean public ActiveMQConnectionFactory activeMQConnectionFactory() { ActiveMQConnectionFactory a = new ActiveMQConnectionFactory(); a.setBrokerURL("failover:(tcp://127.0.0.1:61616)"); a.setUseAsyncSend(true); a.setClientID("providerClienctConnect"); return a; } @Bean public ActiveMQTopic activeMQTopic() { ActiveMQTopic a = new ActiveMQTopic("testSpringTopic1"); return a; } @Bean public ConsumerMessageListener consumerMessageListener(){ ConsumerMessageListener c=new ConsumerMessageListener(); return c; } @Bean public DefaultMessageListenerContainer defaultMessageListenerContainer1(ActiveMQConnectionFactory factory,ActiveMQTopic topic,ConsumerMessageListener listener){ DefaultMessageListenerContainer d=new DefaultMessageListenerContainer(); d.setConnectionFactory(factory); d.setPubSubDomain(true); d.setDestination(topic); d.setSubscriptionDurable(true); d.setClientId("consumerClient1"); d.setMessageListener(listener); d.setSessionAcknowledgeMode(1); return d; } @Bean public DefaultMessageListenerContainer defaultMessageListenerContainer2(ActiveMQConnectionFactory factory,ActiveMQTopic topic,ConsumerMessageListener listener){ DefaultMessageListenerContainer d=new DefaultMessageListenerContainer(); d.setConnectionFactory(factory); d.setPubSubDomain(true); d.setDestination(topic); d.setSubscriptionDurable(true); d.setClientId("consumerClient2"); d.setMessageListener(listener); d.setSessionAcknowledgeMode(1); return d; } }
3消息监听配置
package com.springboot.config; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; public class ConsumerMessageListener implements MessageListener { @Override public void onMessage(Message message) { TextMessage tm = (TextMessage) message; try { System.out.println("---------消息消费---------"); System.out.println("消息内容:\t" + tm.getText()); } catch (JMSException e) { e.printStackTrace(); } } public void f(){ System.out.println("ConsumerMessageListener.f()"); } }
注:
如果改成消息队列
1. @Bean public ActiveMQQueue activeMQQueue(){ ActiveMQQueue a=new ActiveMQQueue("Jaycekon"); return a; } 2. d.setPubSubDomain(false);//改成false d.setDestination(queue);
浙公网安备 33010602011771号