是否可以从RabbitMQ侦听器bean发送带有SimpMessageSendingOperations的消息?

我有以下侦听器类:

 public class MyJobListener {
     @Autowired
     public SimpMessageSendingOperations messagingTemplate;

     public void handleJob(JobMessage jobMessage) {
         doWork(jobMessage);

         messagingTemplate.convertAndSend("/topic/greetings", "TEST");
     }
 }


我的Rabbit配置文件是:

<!-- RabbitMQ configuration -->
<rabbit:connection-factory id="connectionFactory" host="${rabbitmq.connection.host}" port="${rabbitmq.connection.port}"  />
<rabbit:admin connection-factory="connectionFactory" />
<rabbit:template id="amqpTemplate" connection-factory="connectionFactory" />

<!-- Queues -->
<rabbit:queue id="myQueue" name="myQueue" />

<!-- Listeners -->
<bean id="myListener01" class="com.xxx.MyJobListener" />
<bean id="myListener02" class="com.xxx.MyJobListener" />
<bean id="myListener03" class="com.xxx.MyJobListener" />
<bean id="myListener04" class="com.xxx.MyJobListener" />

<rabbit:listener-container connection-factory="connectionFactory" >
    <rabbit:listener ref="myListener01" method="handleJob" queue-names="myQueue" />
    <rabbit:listener ref="myListener02" method="handleJob" queue-names="myQueue" />
    <rabbit:listener ref="myListener03" method="handleJob" queue-names="myQueue" />
    <rabbit:listener ref="myListener04" method="handleJob" queue-names="myQueue" />
</rabbit:listener-container>

<!-- Bindings -->
<rabbit:direct-exchange name="directexchange" >
    <rabbit:bindings>
        <rabbit:binding queue="myQueue"/>
    </rabbit:bindings>
</rabbit:direct-exchange>


当希望发送消息时(messagingTemplate.convertAndSend(“ / topic / greetings”,“ TEST”))什么也没有发生,但是如果我做同样的事情,但是在@Controller中,一切正常(消息通过websocket发送到浏览器)

我需要执行此操作以在作业完成时向用户发送通知。

最佳答案

经过多次测试,我更改了Rabbit配置文件,仅保留了一个侦听器:

<!-- Listeners -->
<bean id="myListener01" class="com.xxx.MyJobListener" />

<rabbit:listener-container connection-factory="connectionFactory" error-handler="queueErrorHandler" >
    <rabbit:listener ref="myListener01" method="handleJob" queue-names="myQueue" />
</rabbit:listener-container>


现在几乎可以随机使用了很奇怪,但是每2个调用就可以了。我的意思是,两次是,两次不是,两次是,两次不是...等等...这很奇怪。我认为Rabbit配置有一些问题...

10-07 15:52