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

如何为JMS客户端设置持久性?

堵浩波
2023-03-14

我使用使用SSL的安全通道通过JMS与Weblogic IBM Webpsphere MQ建立了连接。我在Weblogic上的应用程序收到了来自MQ的消息。正在将应答发送到应答队列。响应头存在MQMD,它填充java。在参数持久化JMS发送值“1”中。其他系统需要在持久化时接收值“0”。如何将此参数设置为java?我猜这个参数是javax。jms。deliverymode。但我不知道怎么设置。

无论如何,谢谢你的帮助。

共有3个答案

慕兴平
2023-03-14

I 0x5a4d的答案是可以的,但最好像IBM最佳实践那样使用它

//Persistentmode = 1 
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
//Persistentmode = 2 
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
祁杰
2023-03-14

你应该这样尝试:

public String sendMessage(ConnectionFactory connectionFactory,
                      Destination destination,
                      Destination jmsReplyTo,
                      CorrelationType correlationType,
                      CallOptions<String> callOptions,
                      String rqUid,
                      JMSAbstract transport) throws JMSException {
Connection connection = null;
Session session = null;
MessageProducer producer = null;

try {

    connection = connectionFactory.createConnection();
    session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

    producer = session.createProducer(destination);

    // Set JMS DeliverMode (1/2)
    producer.setDeliveryMode(1);

    // create message
    Message message = createTextMessage(session, jmsReplyTo, correlationType, callOptions, rqUid, transport);

    // send message
    producer.send(message);

    return correlationType.getCorrelationId(message);

    } finally {
        closeResource(connection, session, null, producer, rqUid);
    }
}

这只是一个java示例。您还可以在IBM WebSphere的队列配置中设置持久性标志。我的意思是MQQueue具有方法setPersistence。如果在项目中使用IBM java对象,可以通过调用该方法设置持久性:

MQQueue mqQueue = new MQQueue("QueueName");
mqQueue.setPersistence(1);
欧阳安晏
2023-03-14

JMS上的相应属性是传递模式(要设置的Int参数),用于设置持久和非持久消息。

您可以参考此URL从IBM详细信息

 类似资料:
  • 我正在使用Camel开发客户端/服务器请求/回复系统。 客户机和服务器使用两个JMS队列进行通信:请求队列和响应队列。 服务器端有一个camel路由,它使用来自请求队列的JMS消息并同时处理消息。使用响应队列将响应发送回客户端。 客户端向JMS队列发送消息并等待响应。我有两个问题: > 客户端实际上是其他应用程序将使用的库。我也想在客户端使用Camel,但不知道如何将Camel用作“函数”,即在我

  • 在我做了插座之后。多房间聊天应用程序的IO服务器如何使用https://github.com/socketio/socket.io-client-java ? 我搜索了很多,在socket的客户端还没有找到最新的例子。对于android,大多数教程和示例都是针对带有节点的服务器端的。js。

  • 在JMS 1.x中,客户端ID用于在创建持久订阅时唯一标识客户端。这个答案解释了JMS 1.x中clientId的用法 对于JMS 2. x,clientId是可选的。我想了解在JMS 2. x中提供clientId的利弊。 摘自甲骨文中一篇关于 JMS 2.x 功能的文章: 共享持久订阅。这些仅在JMS 2.0中可用,并使用创建。它们可以有任意数量的消费者。设置客户端标识符是可选的。订阅由订阅名

  • 自定义成菜单 说明: 1)启用该功能后,直播客户端可以通过自定义菜单的方式加载用户自定义的网页,方便结合自身业务进行交互操作(客户端5.0.0以上版本支持) 问卷设置 说明: 1)在直播管理页面点击 “问卷设置”,启用该功能后,直播客户端可以通过接口请求的方式将用户问卷库中的问卷导入到客户端中使用 2)关于问卷设置的具体功能及使用方法,请参考:问卷接口开发指南 菜单设置 说明: 1)支持对客户端的

  • 我正在使用网络逻辑10.3。我正在尝试配置一个持久订阅,其中包含由 jdbc 存储(在 Oracle DB 中)支持的持久消息。我有一个主题,MDB 正在作为持久订阅者侦听该主题。在场景-1下:如果我发送消息,它会命中MDB。 在场景2中:我挂起了MDB,希望发送到主题的消息只要不被MDB(它是唯一注册的持久订阅者)使用,就会一直存在。但是当我向主题发送消息时,它短暂地出现在那里,然后就消失了(我

  • 问题内容: 我有几个关于客户端节点的Elasticsearch问题: 我可以说:任何节点只要打开HTTP端口,我都可以将它们视为“客户端”节点,因为我们可以通过该节点进行搜索/索引。 实际上,当和时,我们将节点视为客户端节点,如果我设置了10个客户端节点,是否需要在客户端进行路由,这意味着如果我在代码 中将clientOne:9200 指定为ES门户,则 clientOne会 转发其他HTTP请求