[英]Receiver doesn't receive messages from topic
我有兩個不同的發送者和接收者應用程序。
發件人:
@SpringBootApplication
public class RabbitJmsApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(RabbitJmsApplication.class, args);
}
@Autowired
private JmsTemplate template;
@Autowired
private JmsTemplate topicTemplate;
@Override
public void run(String... arg0) throws Exception {
for (int i = 0; i < 10; i++) {
template.convertAndSend("my_queue", "msg_" + i);
Thread.sleep(100);
}
for (int i = 0; i < 10; i++) {
topicTemplate.convertAndSend("my_topic", "topic_msg_" + i);
Thread.sleep(100);
}
}
@Bean
public RMQConnectionFactory connectionFactory() {
return new RMQConnectionFactory();
}
@Bean
public JmsTemplate template() {
return new JmsTemplate(connectionFactory());
}
@Bean
public JmsTemplate topicTemplate() {
final JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory());
jmsTemplate.setPubSubDomain(true);
return jmsTemplate;
}
}
和接收者:
@Component
public class Listener {
@JmsListener(destination = "my_queue")
public void receive(String str){
System.out.println(str);
}
@JmsListener(destination = "my_topic")
public void receiveTopic(String str){
System.out.println(str);
}
}
我懂了
msg_1
msg_2
...
在接收器上,但看不到主題消息。
我究竟做錯了什么?
管理控制台:
默認情況下,對主題的訂閱不是持久性的-您可能在啟動偵聽器之前發送消息。
在將消息發送到主題之前,請嘗試添加Thread.sleep()
。
將以下bean添加到上下文后,我的接收器開始接收消息:
@Bean
public JmsListenerContainerFactory<?> myFactory(DefaultJmsListenerContainerFactoryConfigurer configurer) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
// This provides all boot's default to this factory, including the message converter
configurer.configure(factory, connectionFactory());
// You could still override some of Boot's default if necessary.
factory.setPubSubDomain(true);
return factory;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.