Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有AMQP的Azure服务总线-如何指定会话ID_Java_Azure_Session_Amqp_Azureservicebus - Fatal编程技术网

Java 具有AMQP的Azure服务总线-如何指定会话ID

Java 具有AMQP的Azure服务总线-如何指定会话ID,java,azure,session,amqp,azureservicebus,Java,Azure,Session,Amqp,Azureservicebus,我正在尝试使用AMQP QPID java库向服务总线发送消息 我得到这个错误: “需要为分区邮件的所有代理邮件设置SessionId “支持排序的主题” 我的主题已启用“强制消息排序”(我想这是我得到此错误的方式) 使用Azure Service bus java库(而不是AMQP)时,我有以下功能: this.entity.setSessionId(…) 使用AMQP库时,我看不到在要发送的消息上设置会话ID的选项 请注意,如果取消选中“强制消息排序”选项,消息将成功发送 这是我的密码 pr

我正在尝试使用AMQP QPID java库向服务总线发送消息

我得到这个错误:

“需要为分区邮件的所有代理邮件设置SessionId “支持排序的主题”

我的主题已启用“强制消息排序”(我想这是我得到此错误的方式)

使用Azure Service bus java库(而不是AMQP)时,我有以下功能:

this.entity.setSessionId(…)

使用AMQP库时,我看不到在要发送的消息上设置会话ID的选项

请注意,如果取消选中“强制消息排序”选项,消息将成功发送

这是我的密码

private boolean sendServiceBusMsg(MessageProducer sender,Session sendSession) {

        try {
            // generate message

            BytesMessage createBytesMessage = (BytesMessage)sendSession.createBytesMessage();

            createBytesMessage.setStringProperty(CAMPAIGN_ID, campaignKey);             
            createBytesMessage.setJMSMessageID("ID:" + bm.getMessageId());                                                    
      createBytesMessage.setContentType(Symbol.getSymbol("application/octet-stream"));

            /*message is the actual data i send / not seen here*/
            createBytesMessage.writeBytes(message.toByteArray());

            sender.send(createBytesMessage);

        } catch (JMSException e) {
    }

SessionId属性映射到AMQP message properties.group-id。Qpid JMS客户端应将其映射到JMSXGroupID属性,因此请尝试以下操作:,

createBytesMessage.setStringProperty(“JMSXGroupID”、“会话-1”);

SessionId属性映射到AMQP message properties.group-id。Qpid JMS客户端应将其映射到JMSXGroupID属性,因此请尝试以下操作:,

createBytesMessage.setStringProperty(“JMSXGroupID”、“会话-1”);

正如您所猜测的,有一个类似的SO线程经过验证,通过set
SupportOrdering
false
禁用功能
强制消息排序
可以解决此问题,但无法通过Azure Service Bus Java library完成,因为该属性现在处于私有状态

您可以尝试使用AMQP设置@XinChen所说的属性
Group
,如下所示

服务总线会话,在AMQP 1.0协议中也称为“组”,是相关消息的无界序列。ServiceBus保证会话中消息的顺序


希望有帮助。

正如您所猜测的,有一个类似的SO线程经过验证,通过set
SupportOrdering
false
禁用功能
强制消息排序
可以解决问题,但无法通过Azure Service Bus Java library完成,因为该属性现在是私有的

您可以尝试使用AMQP设置@XinChen所说的属性
Group
,如下所示

服务总线会话,在AMQP 1.0协议中也称为“组”,是相关消息的无界序列。ServiceBus保证会话中消息的顺序

希望能有帮助