当前位置: 首页 > 知识库问答 >
问题:

可以在@JmsListener SpringBoot中选择性禁用队列消耗吗?

方弘
2023-03-14

我正在使用SpringBoot和@JmsListener从同一个QManager中的多个队列中检索IBM MQ消息。到目前为止,我可以得到没有任何问题的消息。但也有可能出现这样的情况,我不得不暂时停止使用其中一个队列中的MSG。它不一定是动态的。

我没有使用任何自定义ConnectionFactory方法。需要时,我想在application.properties中进行配置更改,以禁用特定的队列消耗并重新启动进程。这可能吗?找不到此方案的任何特定信息。感谢您的任何建议。TIA。

@Component
public class MyJmsListener {
  @JmsListener(destination = "{ibm.mq.queue.queue01}")
  public void handleQueue01(String message) {
      System.out.println("received: "+message);
  }

  @JmsListener(destination = "{ibm.mq.queue.queue02}")
  public void handleQueue02(String message) {
      System.out.println("received: "+message);
  }
} 


application.properties

ibm.mq.queue.queue01=IBM.QUEUE01
ibm.mq.queue.queue02=IBM.QUEUE02

共有1个答案

澹台鸿光
2023-03-14

如果给每个JmsListener提供一个id属性,那么可以使用JmsListenerEndpointRegistry bean分别启动和停止它们。

registry.getListenerContainer(id).stop();
 类似资料:
  • 有一个SQS队列,我在其中不断收到消息。我只需要阅读和处理过去24小时内收到的信息。目前收到的信息应在第二天处理<代码>时间戳存储在消息正文中。 是否可以从SQS队列中选择性地读取消息。例如,只读那些值大于前一天的时间戳但小于当前时间戳(当前时间戳是此作业运行的时间)的消息?

  • 我在设置JComboBox时遇到问题。用户在separte面板上有几个选项,这些选项决定是否应该启用/禁用JComboBox——我的问题是,即使禁用了JComboBox,用户仍然可以从中进行选择(当组合框变灰时,它被禁用)!JComboBox使用自定义TableCellRenderer和自定义DefaultCellEditor。JComboBox也是JTable中一行的单元格/列。 下面是代码的细

  • 我试图使ghci为我的库显示的类型尽可能直观,但在使用更高级的类型特性时遇到了很多困难。 假设我在一个文件中有这段代码: 我在ghci中加载它,然后键入以下命令: 为什么ghci要替换类型族,而不是类型同义词?有没有办法控制ghci什么时候做替换?

  • 我有一个java客户机,它在队列中发送jms消息(“队列请求”)。该消息包含一个int属性(“id”),其中包含唯一的客户端id号。消息正在处理中,然后进入另一个队列(“队列响应”)。如何让客户机等到具有其id的消息在队列中,然后读取它。我曾尝试使用侦听器并实现onMessage,但当收到消息时,我如何停止侦听?

  • 对于一个幼稚的开发人员来说,他们似乎可以发布到集群中的任何节点,并从这些节点消费,这会给他们一种高可用性的错误感觉。 如果承载队列的节点死亡,使用者将不再能够从另一个节点到达队列。 是否有一种方法可以禁用这种行为,这样就可以很明显地看到,您要么必须有一个镜像队列,要么需要在每台服务器上创建一个不同的队列,从这两个服务器中使用,然后处理重复的队列。 谢谢

  • 问题内容: 想象一下这个查询… 如您所见,我已经重复了和的添加。我可以引用我在查询的其他部分中创建的列吗? 我尝试了一下,然后得到 1054:where子句中的Unknown列 。 问题答案: 使用: 最早的MySQL允许引用列别名是子句。后面的子句支持引用(,)。大多数其他数据库不支持在之前引用表别名,这通常需要使用派生表/内联视图: 否则,您必须重用WHERE子句中的逻辑: