【问题标题】:Suspend a Queue from MDB挂起 MDB 中的队列
【发布时间】:2012-11-14 21:34:17
【问题描述】:

我们有一个使用JMS QueueMDB 的应用程序。我希望一次只能从QueueMDB 发送一条消息。我的意思是一旦MDB 收到来自Queue 的消息,它应该暂停Queue,一旦处理完成,应该恢复Queue。我可以在我的MDB 中为此编写代码吗?或者我可以在ejb-jar.xml 中进行任何配置吗?

【问题讨论】:

  • 您可以将池调整为大小 1,并且只有 1 个 bean 来完成这项工作。

标签: java jms weblogic jboss-mdb


【解决方案1】:

曾经我不得不对 GlassFish 做同样的事情。您可以告诉您的应用程序服务器在每个 MDB 的使用者上创建,然后您的 MDB 将一次处理一条消息。在 glassfish 中做到这一点:

打开 GlassFish Server 管理控制台,导航到 配置 -> 配置名称 -> EJB 容器节点,然后选择 MDB 设置选项卡。

指定:

Maximum Pool Size:1

玻璃鱼就是这样。重新启动服务器,您就可以开始了。查看thisthis 了解更多信息。

【讨论】:

    【解决方案2】:

    将您的 MDB 实现为:

    @MessageDriven(name = "SingleThreadedMdb ", activationConfig = {
       @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
       @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/myQueue"),
       @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
       @ActivationConfigProperty(propertyName = "maxSession", propertyValue = "1"),
       @ActivationConfigProperty(propertyName = "consumerWindowSize", propertyValue = "0")
    })
    public class SingleThreadedMdb implements MessageListener {
    
      @Override
      public void onMessage(Message message) {
      }
    
    }
    

    standalone-full.xml中的队列配置为:

    <address-setting match="jms.queue.myQueue">
      <dead-letter-address>jms.queue.DLQ</dead-letter-address>
      <expiry-address>jms.queue.ExpiryQueue</expiry-address>
      <redelivery-delay>0</redelivery-delay>
      <max-delivery-attempts>1</max-delivery-attempts>
      <max-size-bytes>10485760</max-size-bytes>
      <address-full-policy>BLOCK</address-full-policy>
      <message-counter-history-day-limit>10</message-counter-history-day-limit>
    </address-setting>
    

    在 jms 目的地下添加:

    <jms-queue name="myQueue">
      <entry name="/queue/myQueue"/>
      <durable>true</durable>
    </jms-queue>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      • 2013-02-18
      • 2020-05-28
      相关资源
      最近更新 更多