自定義兩個ContainerFactory,setPubSubDomain(false)為監(jiān)聽queue,setPubSubDomain(true)為監(jiān)聽topic;
@Bean
public DefaultJmsListenerContainerFactory queueListenerFactory(){
? ? DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
? ? factory.setConnectionFactory(connectionFactory);
? ? factory.setPubSubDomain(false);
? ? return factory;
}
@Bean
public DefaultJmsListenerContainerFactory topicListenerFactory(){
? ? DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
? ? factory.setConnectionFactory(connectionFactory);
? ? factory.setPubSubDomain(true);
? ? return factory;
}
監(jiān)聽隊列時指定@JmsListener的containerFactory為上面定義的queueListenerFactory
@JmsListener(destination="${newsedit.queue}",containerFactory="queueListenerFactory")
public voidreceiveQueueMsg(String text){
? ? try{
? ? ? ? PublishServiceQueueMsg msg =mapper.readValue(text,PublishServiceQueueMsg.class);
? ? ? ? msgHandler.handler(msg);
? ? }catch(IOException e) {
? ? ? ? logger.error("receiveQueueMsg error!",e);
? ? ? ? e.printStackTrace();
? ? }
}
監(jiān)聽主題時指定@JmsListener的containerFactory為上面定義的topicListenerFactory
@JmsListener(destination="${newsedit.topic}",containerFactory="topicListenerFactory")
public voidreceiveTopicMsg(String text){
? ? try{
? ? ? ? PublishServiceTopicMsg msg =mapper.readValue(text,PublishServiceTopicMsg.class);
? ? ? ? msgHandler.handler(msg);
? ? }catch(IOException e) {
? ? ? ? logger.error("receiveTopicMsg error!",e);
? ? ? ? e.printStackTrace();
? ? }
}