9.5. 消息标头
Azure ServiceBus 组件支持 25 个消息标头,如下所列:
Name | 描述 | 默认值 | 类型 |
---|---|---|---|
CamelAzureServiceBusApplicationProperties (common) | 生成者和消费者发送和接收的消息应用属性(也称为自定义属性)。 | Map | |
CamelAzureServiceBusContentType (consumer) 常量: CONTENT_TYPE | 获取消息的内容类型。 | 字符串 | |
CamelAzureServiceBusCorrelationId (consumer) 常量: CORRELATION_ID | 获取关联标识符。 | 字符串 | |
CamelAzureServiceBusDeadLetterErrorDescription (consumer) | 获取已死字母消息的描述。 | 字符串 | |
CamelAzureServiceBusDeadLetterReason (consumer) | 获取消息被死字母的原因。 | 字符串 | |
CamelAzureServiceBusDeadLetterSource (consumer) | 在消息被排队之前,获取此消息排队的队列或订阅的名称。 | 字符串 | |
CamelAzureServiceBusDeliveryCount (consumer) 常量:DEL IVERY_COUNT | 获取此消息传送到客户端的次数。 | long | |
CamelAzureServiceBusEnqueuedSequenceNumber (consumer) | 获取由服务总线分配给消息的排队序列号。 | 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) | 获取或设置增加 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) | (producer)覆盖 OffsetDateTime,其中消息应出现在服务总线队列或主题中。(consumer)获取此消息的调度队列时间。 | OffsetDateTime | |
CamelAzureServiceBusServiceBusTransactionContext (producer) | 覆盖服务中的事务。此对象仅包含事务 ID。 | ServiceBusTransactionContext | |
CamelAzureServiceBusProducerOperation (producer) | 覆盖要在制作者中使用的所需操作。 Enum 值:
| ServiceBusProducerOperationDefinition |
9.5.1. 消息正文
在制作者中,此组件接受 String
type 或 List<String>
的消息正文来发送批处理消息。
在消费者中,返回的消息正文将是 'String。
9.5.2. Azure ServiceBus Producer 操作
操作 | 描述 |
---|---|
| 使用批处理方法向服务总线队列或主题发送一组消息。 |
| 向此发送者连接的 Azure Service Bus 实体发送调度的消息。调度的消息已排队,且仅在调度的 enqueue 时间提供给接收器。 |
9.5.3. Azure ServiceBus Consumer 操作
操作 | 描述 |
---|---|
| 接收来自 Service Bus 实体的 <b>infinite</b> 流。 |
| 在不更改接收器或消息源的状态的情况下读取下一个活动消息批处理。 |
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");