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

Websphere MQ上的JMS和退出队列

长孙正卿
2023-03-14

我在Weblogic服务器上有MQ作为外部JMS服务器。问题是,我需要回滚消息并重试,直到达到回退阈值。然后我需要将消息移动到回退队列。

@MessageDriven( name="MQListener", mappedName = "jms.mq.SOME.QUEUE.NAME",
        activationConfig = 
        { 
            @ActivationConfigProperty(propertyName = "destinationType",propertyValue = "javax.jms.Queue"),
            @ActivationConfigProperty(propertyName = "destination", propertyValue = "jms.mq.SOME.QUEUE.NAME"),
            @ActivationConfigProperty(propertyName = "connectionFactoryJndiName", propertyValue = "jms.mq.MQ"),
            @ActivationConfigProperty(propertyName = "useJNDI", propertyValue = "true")
        }) 
public class MQListener implements MessageListener {
    @Resource
    private MessageDrivenContext context;

    @Override
    public void onMessage(Message message) {
        String messageContent="";

        try {
            messageId = message.getJMSMessageID();
            if (message != null) {
                messageContent = ((TextMessage)message).getText();
                if(!doSomething(messageContent)){
                    // doSomething fails, I need to rollback the message and try again:
                    context.setRollbackOnly();
                }
            }
        } catch (Exception e) {
            throw new RuntimeException();
        }

    }

    private boolean doSomething(String messageContent){
        // ...
    }

}

共有1个答案

席兴平
2023-03-14

我是EJB中的泰罗。但是从代码片段中可以看到,我认为您缺少MessageDrivenContext的初始化。我想你必须做任何一件事

context = getMessageDrivenContext(); 
context.setRollbackOnly();

getMessageDrivenContext().setRollbackOnly();
 类似资料:
  • 我试图将一些消息从JMS代码放到本地队列管理器中定义的本地队列中。我在WebSphere MQ中定义了一个本地队列,并使用JMS代码放置消息。我在这里做得对吗。我没有看到WebSphere队列中的消息。 以下是代码:

  • JMS队列有2个消费者,同步和异步Java应用程序进程等待响应。1)同步应用程序发送请求,并根据JMS相关ID等待响应60秒。2)异步线程将不断侦听同一队列。

  • 接口说明 退出当前所在团队 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /permissions/api/team/user/v1.0.0/quitTeam 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN teamId string fo

  • 接口说明 退出当前所在团队 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 POST /permissions/api/team/user/v1.0

  • 目前我有一个Weblogic 10R3开发的Java EE应用程序主机,我有兴趣测试1个消息驱动Bean。问题是我无法访问Bean正在侦听的外部JMS服务器,以下是MDB代码: 我的计划是,Bean将通过JNDI查找队列,并且我确实可以访问Weblogic托管服务器。因此,我可以删除外部JMS服务器,然后添加一个本地JMS队列和包含确切JNDI名称的connectionFactory。因此,隔离外

  • 问题内容: 在这里,我可能正在做一些基本的错误,总的来说,我已经实现了这样的代码: 一切都很好,但是只有第一次,如果我想第二次“使用”查询,我会收到他的错误: 退出后无法排队握手 我还没有尝试到.END()连接,但它并不能帮助 在此先感谢 拉德克 问题答案: 如果使用node- mysql模块,则只需删除.connect和.end。自己解决问题。显然,他们在上次迭代中输入了不必要的代码,该代码也有