9.5. 消息标头


Azure ServiceBus 组件支持 25 个消息标头,如下所列:

Name描述默认值类型

CamelAzureServiceBusApplicationProperties (common)

常数: APPLICATION_PROPERTIES

生成者和消费者发送和接收的消息应用属性(也称为自定义属性)。

 

Map

CamelAzureServiceBusContentType (consumer)

常量: CONTENT_TYPE

获取消息的内容类型。

 

字符串

CamelAzureServiceBusCorrelationId (consumer)

常量: CORRELATION_ID

获取关联标识符。

 

字符串

CamelAzureServiceBusDeadLetterErrorDescription (consumer)

常量: DEAD_LETTER_ERROR_DESCRIPTION

获取已死字母消息的描述。

 

字符串

CamelAzureServiceBusDeadLetterReason (consumer)

常量: DEAD_LETTER_REASON

获取消息被死字母的原因。

 

字符串

CamelAzureServiceBusDeadLetterSource (consumer)

常数: DEAD_LETTER_SOURCE

在消息被排队之前,获取此消息排队的队列或订阅的名称。

 

字符串

CamelAzureServiceBusDeliveryCount (consumer)

常量:DEL IVERY_COUNT

获取此消息传送到客户端的次数。

 

long

CamelAzureServiceBusEnqueuedSequenceNumber (consumer)

常数: ENQUEUED_SEQUENCE_NUMBER

获取由服务总线分配给消息的排队序列号。

 

long

CamelAzureServiceBusEnqueuedTime (consumer)

常数: ENQUEUED_TIME

获取此消息在 Azure Service Bus 中排队的日期。

 

OffsetDateTime

CamelAzureServiceBusExpiresAt (consumer)

常数: EXPIRES_AT

获取此消息将过期的日期。

 

OffsetDateTime

CamelAzureServiceBusLockToken (consumer)

常数: LOCK_TOKEN

获取当前消息的锁定令牌。

 

字符串

CamelAzureServiceBusLockedUntil (consumer)

常数: LOCKED_UNTIL

获取此消息的锁定过期的日期。

 

OffsetDateTime

CamelAzureServiceBusMessageId (consumer)

常量: MESSAGE_ID

获取消息的标识符。

 

字符串

CamelAzureServiceBusPartitionKey (consumer)

常量: PARTITION_KEY

获取向分区实体发送消息的分区密钥。

 

字符串

CamelAzureServiceBusRawAmqpMessage (consumer)

常量: RAW_AMQP_MESSAGE

AMQP 协议定义的消息表示。

 

AmqpAnnotatedMessage

CamelAzureServiceBusReplyTo (consumer)

常数: REPLY_TO

获取要发送回复的实体地址。

 

字符串

CamelAzureServiceBusReplyToSessionId (consumer)

常数: REPLY_TO_SESSION_ID

获取或设置增加 ReplyTo 地址的会话标识符。

 

字符串

CamelAzureServiceBusSequenceNumber (consumer)

常数: SEQUENCE_NUMBER

获取由服务总线分配给消息的唯一数字。

 

long

CamelAzureServiceBusSessionId (consumer)

常数: SESSION_ID

获取消息的会话 ID。

 

字符串

CamelAzureServiceBusSubject (consumer)

常量:SUB JECT

获取邮件的主题。

 

字符串

CamelAzureServiceBusTimeToLive (consumer)

常数: TIME_TO_LIVE

获得此消息过期前的持续时间。

 

Duration

CamelAzureServiceBusTo (consumer)

常数: TO

获取地址。

 

字符串

CamelAzureServiceBusScheduledEnqueueTime (common)

常量: SCHEDULED_ENQUEUE_TIME

(producer)覆盖 OffsetDateTime,其中消息应出现在服务总线队列或主题中。(consumer)获取此消息的调度队列时间。

 

OffsetDateTime

CamelAzureServiceBusServiceBusTransactionContext (producer)

常量: SERVICE_BUS_TRANSACTION_CONTEXT

覆盖服务中的事务。此对象仅包含事务 ID。

 

ServiceBusTransactionContext

CamelAzureServiceBusProducerOperation (producer)

常数: PRODUCER_OPERATION

覆盖要在制作者中使用的所需操作。

Enum 值:

  • sendMessages
  • scheduleMessages
 

ServiceBusProducerOperationDefinition

9.5.1. 消息正文

在制作者中,此组件接受 String type 或 List<String> 的消息正文来发送批处理消息。

在消费者中,返回的消息正文将是 'String。

9.5.2. Azure ServiceBus Producer 操作

操作描述

sendMessages

使用批处理方法向服务总线队列或主题发送一组消息。

scheduleMessages

向此发送者连接的 Azure Service Bus 实体发送调度的消息。调度的消息已排队,且仅在调度的 enqueue 时间提供给接收器。

9.5.3. Azure ServiceBus Consumer 操作

操作描述

receiveMessages

接收来自 Service Bus 实体的 <b>infinite</b> 流。

peekMessages

在不更改接收器或消息源的状态的情况下读取下一个活动消息批处理。

9.5.3.1. 例子

  • sendMessages
from("direct:start")
  .process(exchange -> {
         final List<Object> inputBatch = new LinkedList<>();
            inputBatch.add("test batch 1");
            inputBatch.add("test batch 2");
            inputBatch.add("test batch 3");
            inputBatch.add(123456);

            exchange.getIn().setBody(inputBatch);
       })
  .to("azure-servicebus:test//?connectionString=test")
  .to("mock:result");
  • scheduleMessages
from("direct:start")
  .process(exchange -> {
         final List<Object> inputBatch = new LinkedList<>();
            inputBatch.add("test batch 1");
            inputBatch.add("test batch 2");
            inputBatch.add("test batch 3");
            inputBatch.add(123456);

            exchange.getIn().setHeader(ServiceBusConstants.SCHEDULED_ENQUEUE_TIME, OffsetDateTime.now());
            exchange.getIn().setBody(inputBatch);
       })
  .to("azure-servicebus:test//?connectionString=test&producerOperation=scheduleMessages")
  .to("mock:result");
  • receiveMessages
from("azure-servicebus:test//?connectionString=test")
  .log("${body}")
  .to("mock:result");
  • peekMessages
from("azure-servicebus:test//?connectionString=test&consumerOperation=peekMessages&peekNumMaxMessages=3")
  .log("${body}")
  .to("mock:result");
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.