- DefaultMQProducer
DefaultMQProducer(final String producerGroup, RPCHook rpcHook, boolean enableMsgTrace,final String customizedTraceTopic)
使用指定的分组名及自定义hook创建一个生产者,并设置是否开启消息追踪及追踪topic的名称。
- 入参描述:
| 名 | 类型 | 是否必须 | 缺省值 | 描述 |
| — | — | — | — | — |
| oducerGroup | String | 是 | DEFAULT_PRODUCER | 生产者的分组名称 |
| cHook | RPCHook | 否 | null | 每个远程命令执行后会回调rpcHook |
| ableMsgTrace | boolean | 是 | false | 是否开启消息追踪 |
| stomizedTraceTopic | String | 否 | RMQ_SYS_TRACE_TOPIC | 消息跟踪topic的名称 |
使用方法详细信息
- createTopic
public void createTopic(String key, String newTopic, int queueNum)
在broker上创建一个topic。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| String | 是 | | | 访问密钥。 |
| opic | String | 是 | | |
| eNum | int | 是 | 0 | (0, maxIntValue] |
- 返回值描述:
void
- 异常描述:
MQClientException - 生产者状态非Running;未找到broker等客户端异常。
- createTopic
public void createTopic(String key, String newTopic, int queueNum, int topicSysFlag)
在broker上创建一个topic。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| String | 是 | | | 访问密钥。 |
| opic | String | 是 | | |
| eNum | int | 是 | 0 | (0, maxIntValue] |
| cSysFlag | int | 是 | 0 | |
- 返回值描述:
void
- 异常描述:
MQClientException - 生产者状态非Running;未找到broker等客户端异常。
- earliestMsgStoreTime
public long earliestMsgStoreTime(MessageQueue mq)
查询最早的消息存储时间。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| MessageQueue | 是 | | | 要查询的消息队列 |
- 返回值描述:
指定队列最早的消息存储时间。单位:毫秒。
- 异常描述:
MQClientException - 生产者状态非Running;没有找到broker;broker返回失败;网络异常;线程中断等客户端异常。
- fetchPublishMessageQueues
public List<MessageQueue> fetchPublishMessageQueues(String topic)
获取topic的消息队列。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| c | String | 是 | | |
- 返回值描述:
传入topic下的消息队列。
- 异常描述:
MQClientException - 生产者状态非Running;没有找到broker;broker返回失败;网络异常;线程中断等客户端异常。
- maxOffset
public long maxOffset(MessageQueue mq)
查询消息队列的最大物理偏移量。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| MessageQueue | 是 | | | 要查询的消息队列 |
- 返回值描述:
给定消息队列的最大物理偏移量。
- 异常描述:
MQClientException - 生产者状态非Running;没有找到broker;broker返回失败;网络异常;线程中断等客户端异常。
- minOffset
public long minOffset(MessageQueue mq)
查询给定消息队列的最小物理偏移量。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| MessageQueue | 是 | | | 要查询的消息队列 |
- 返回值描述:
给定消息队列的最小物理偏移量。
- 异常描述:
MQClientException - 生产者状态非Running;没有找到broker;broker返回失败;网络异常;线程中断等客户端异常。
- queryMessage
public QueryResult queryMessage(String topic, String key, int maxNum, long begin, long end)
按关键字查询消息。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| c | String | 是 | | |
| String | 否 | null | | 查找的关键字 |
| um | int | 是 | | |
| n | long | 是 | | |
| long | 是 | | | 结束时间戳,单位:毫秒 |
- 返回值描述:
查询到的消息集合。
- 异常描述:
MQClientException - 生产者状态非Running;没有找到broker;broker返回失败;网络异常等客户端异常客户端异常。
InterruptedException - 线程中断。
- searchOffset
public long searchOffset(MessageQueue mq, long timestamp)
查找指定时间的消息队列的物理偏移量。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| MessageQueue | 是 | | | 要查询的消息队列。 |
| stamp | long | 是 | | |
- 返回值描述:
指定时间的消息队列的物理偏移量。
- 异常描述:
MQClientException - 生产者状态非Running;没有找到broker;broker返回失败;网络异常;线程中断等客户端异常。
- send
public SendResult send(Collection<Message> msgs)
同步批量发送消息。在返回发送失败之前,内部尝试重新发送消息的最大次数(参见_retryTimesWhenSendFailed_属性)。未明确指定发送队列,默认采取轮询策略发送。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Collection | 是 | | | 待发送的消息集合。集合内的消息必须属同一个topic。 |
- 返回值描述:
批量消息的发送结果,包含msgId,发送状态等信息。
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
MQBrokerException - broker发生错误。
InterruptedException - 发送线程中断。
RemotingTooMuchRequestException - 发送超时。
- send
public SendResult send(Collection<Message> msgs, long timeout)
同步批量发送消息,如果在指定的超时时间内未完成消息投递,会抛出_RemotingTooMuchRequestException_。
在返回发送失败之前,内部尝试重新发送消息的最大次数(参见_retryTimesWhenSendFailed_属性)。未明确指定发送队列,默认采取轮询策略发送。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Collection | 是 | | | 待发送的消息集合。集合内的消息必须属同一个topic。 |
| out | long | 是 | 参见_sendMsgTimeout_属性 | |
- 返回值描述:
批量消息的发送结果,包含msgId,发送状态等信息。
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
MQBrokerException - broker发生错误。
InterruptedException - 发送线程中断。
RemotingTooMuchRequestException - 发送超时。
- send
public SendResult send(Collection<Message> msgs, MessageQueue messageQueue)
向给定队列同步批量发送消息。
注意:指定队列意味着所有消息均为同一个topic。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Collection | 是 | | | 待发送的消息集合。集合内的消息必须属同一个topic。 |
| ageQueue | MessageQueue | 是 | | |
- 返回值描述:
批量消息的发送结果,包含msgId,发送状态等信息。
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
MQBrokerException - broker发生错误。
InterruptedException - 发送线程中断。
RemotingTooMuchRequestException - 发送超时。
- send
public SendResult send(Collection<Message> msgs, MessageQueue messageQueue, long timeout)
向给定队列同步批量发送消息,如果在指定的超时时间内未完成消息投递,会抛出_RemotingTooMuchRequestException_。
注意:指定队列意味着所有消息均为同一个topic。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Collection | 是 | | | 待发送的消息集合。集合内的消息必须属同一个topic。 |
| out | long | 是 | 参见_sendMsgTimeout_属性 | |
| ageQueue | MessageQueue | 是 | | |
- 返回值描述:
批量消息的发送结果,包含msgId,发送状态等信息。
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
MQBrokerException - broker发生错误。
InterruptedException - 发送线程中断。
RemotingTooMuchRequestException - 发送超时。
- send
public SendResult send(Message msg)
以同步模式发送消息,仅当发送过程完全完成时,此方法才会返回。
在返回发送失败之前,内部尝试重新发送消息的最大次数(参见_retryTimesWhenSendFailed_属性)。未明确指定发送队列,默认采取轮询策略发送。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Message | 是 | | | 待发送的消息。 |
- 返回值描述:
消息的发送结果,包含msgId,发送状态等信息。
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
MQBrokerException - broker发生错误。
InterruptedException - 发送线程中断。
RemotingTooMuchRequestException - 发送超时。
- send
public SendResult send(Message msg, long timeout)
以同步模式发送消息,如果在指定的超时时间内未完成消息投递,会抛出_RemotingTooMuchRequestException_。仅当发送过程完全完成时,此方法才会返回。
在返回发送失败之前,内部尝试重新发送消息的最大次数(参见_retryTimesWhenSendFailed_属性)。未明确指定发送队列,默认采取轮询策略发送。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Message | 是 | | | 待发送的消息。 |
| out | long | 是 | 参见_sendMsgTimeout_属性 | |
- 返回值描述:
消息的发送结果,包含msgId,发送状态等信息。
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
MQBrokerException - broker发生错误。
InterruptedException - 发送线程中断。
RemotingTooMuchRequestException - 发送超时。
- send
public SendResult send(Message msg, MessageQueue mq)
向指定的消息队列同步发送单条消息。仅当发送过程完全完成时,此方法才会返回。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Message | 是 | | | 待发送的消息。 |
| MessageQueue | 是 | | | 待投递的消息队列。 |
- 返回值描述:
消息的发送结果,包含msgId,发送状态等信息。
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
MQBrokerException - broker发生错误。
InterruptedException - 发送线程中断。
RemotingTooMuchRequestException - 发送超时。
- send
public SendResult send(Message msg, MessageQueue mq, long timeout)
向指定的消息队列同步发送单条消息,如果在指定的超时时间内未完成消息投递,会抛出_RemotingTooMuchRequestException_。仅当发送过程完全完成时,此方法才会返回。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Message | 是 | | | 待发送的消息。 |
| out | long | 是 | 参见_sendMsgTimeout_属性 | |
| MessageQueue | 是 | | | 待投递的消息队列。指定队列意味着待投递消息均为同一个topic。 |
- 返回值描述:
消息的发送结果,包含msgId,发送状态等信息。
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
MQBrokerException - broker发生错误。
InterruptedException - 发送线程中断。
RemotingTooMuchRequestException - 发送超时。
- send
public void send(Message msg, MessageQueue mq, SendCallback sendCallback)
向指定的消息队列异步发送单条消息,异步发送调用后直接返回,并在在发送成功或者异常时回调sendCallback
,所以异步发送时sendCallback
参数不能为null,否则在回调时会抛出NullPointerException
。
异步发送时,在成功发送前,其内部会尝试重新发送消息的最大次数(参见_retryTimesWhenSendAsyncFailed_属性)。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Message | 是 | | | 待发送的消息。 |
| MessageQueue | 是 | | | 待投递的消息队列。指定队列意味着待投递消息均为同一个topic。 |
| Callback | SendCallback | 是 | | |
- 返回值描述:
void
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
InterruptedException - 发送线程中断。
- send
public void send(Message msg, MessageQueue mq, SendCallback sendCallback, long timeout)
向指定的消息队列异步发送单条消息,异步发送调用后直接返回,并在在发送成功或者异常时回调sendCallback
,所以异步发送时sendCallback
参数不能为null,否则在回调时会抛出NullPointerException
。
若在指定时间内消息未发送成功,回调方法会收到_RemotingTooMuchRequestException_异常。
异步发送时,在成功发送前,其内部会尝试重新发送消息的最大次数(参见_retryTimesWhenSendAsyncFailed_属性)。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Message | 是 | | | 待发送的消息。 |
| MessageQueue | 是 | | | 待投递的消息队列。 |
| Callback | SendCallback | 是 | | |
| out | long | 是 | 参见_sendMsgTimeout_属性 | |
- 返回值描述:
void
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
InterruptedException - 发送线程中断。
- send
public SendResult send(Message msg, MessageQueueSelector selector, Object arg)
向通过MessageQueueSelector
计算出的队列同步发送消息。
可以通过自实现MessageQueueSelector
接口,将某一类消息发送至固定的队列。比如:将同一个订单的状态变更消息投递至固定的队列。
注意:此消息发送失败内部不会重试。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Message | 是 | | | 待发送的消息。 |
| ctor | MessageQueueSelector | 是 | | |
| Object | 否 | | | 供队列选择器使用的参数对象。 |
- 返回值描述:
消息的发送结果,包含msgId,发送状态等信息。
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
MQBrokerException - broker发生错误。
InterruptedException - 发送线程中断。
RemotingTooMuchRequestException - 发送超时。
- send
public SendResult send(Message msg, MessageQueueSelector selector, Object arg, long timeout)
向通过MessageQueueSelector
计算出的队列同步发送消息,并指定发送超时时间。
可以通过自实现MessageQueueSelector
接口,将某一类消息发送至固定的队列。比如:将同一个订单的状态变更消息投递至固定的队列。
注意:此消息发送失败内部不会重试。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Message | 是 | | | 待发送的消息。 |
| ctor | MessageQueueSelector | 是 | | |
| Object | 否 | | | 供队列选择器使用的参数对象。 |
| out | long | 是 | 参见_sendMsgTimeout_属性 | |
- 返回值描述:
消息的发送结果,包含msgId,发送状态等信息。
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
MQBrokerException - broker发生错误。
InterruptedException - 发送线程中断。
RemotingTooMuchRequestException - 发送超时。
- send
public void send(Message msg, MessageQueueSelector selector, Object arg, SendCallback sendCallback)
向通过MessageQueueSelector
计算出的队列异步发送单条消息,异步发送调用后直接返回,并在在发送成功或者异常时回调sendCallback
,所以异步发送时sendCallback
参数不能为null,否则在回调时会抛出NullPointerException
。
异步发送时,在成功发送前,其内部会尝试重新发送消息的最大次数(参见_retryTimesWhenSendAsyncFailed_属性)。
可以通过自实现MessageQueueSelector
接口,将某一类消息发送至固定的队列。比如:将同一个订单的状态变更消息投递至固定的队列。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Message | 是 | | | 待发送的消息。 |
| ctor | MessageQueueSelector | 是 | | |
| Object | 否 | | | 供队列选择器使用的参数对象。 |
| Callback | SendCallback | 是 | | |
- 返回值描述:
void
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
InterruptedException - 发送线程中断。
- send
public void send(Message msg, MessageQueueSelector selector, Object arg, SendCallback sendCallback, long timeout)
向通过MessageQueueSelector
计算出的队列异步发送单条消息,异步发送调用后直接返回,并在在发送成功或者异常时回调sendCallback
,所以异步发送时sendCallback
参数不能为null,否则在回调时会抛出NullPointerException
。
异步发送时,在成功发送前,其内部会尝试重新发送消息的最大次数(参见_retryTimesWhenSendAsyncFailed_属性)。
可以通过自实现MessageQueueSelector
接口,将某一类消息发送至固定的队列。比如:将同一个订单的状态变更消息投递至固定的队列。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Message | 是 | | | 待发送的消息。 |
| ctor | MessageQueueSelector | 是 | | |
| Object | 否 | | | 供队列选择器使用的参数对象。 |
| Callback | SendCallback | 是 | | |
| out | long | 是 | 参见_sendMsgTimeout_属性 | |
- 返回值描述:
void
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
InterruptedException - 发送线程中断。
- send
public void send(Message msg, SendCallback sendCallback)
异步发送单条消息,异步发送调用后直接返回,并在在发送成功或者异常时回调sendCallback
,所以异步发送时sendCallback
参数不能为null,否则在回调时会抛出NullPointerException
。
异步发送时,在成功发送前,其内部会尝试重新发送消息的最大次数(参见_retryTimesWhenSendAsyncFailed_属性)。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Message | 是 | | | 待发送的消息。 |
| Callback | SendCallback | 是 | | |
- 返回值描述:
void
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
InterruptedException - 发送线程中断。
- send
public void send(Message msg, SendCallback sendCallback, long timeout)
异步发送单条消息,异步发送调用后直接返回,并在在发送成功或者异常时回调sendCallback
,所以异步发送时sendCallback
参数不能为null,否则在回调时会抛出NullPointerException
。
异步发送时,在成功发送前,其内部会尝试重新发送消息的最大次数(参见_retryTimesWhenSendAsyncFailed_属性)。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Message | 是 | | | 待发送的消息。 |
| Callback | SendCallback | 是 | | |
| out | long | 是 | 参见_sendMsgTimeout_属性 | |
- 返回值描述:
void
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
InterruptedException - 发送线程中断。
- sendMessageInTransaction
public TransactionSendResult sendMessageInTransaction(Message msg, LocalTransactionExecuter tranExecuter, final Object arg)
发送事务消息。该类不做默认实现,抛出RuntimeException
异常。参见:TransactionMQProducer
类。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Message | 是 | | | 待投递的事务消息 |
| Executer | LocalTransactionExecuter
| 是 | | |
| Object | 是 | | | 供本地事务执行程序使用的参数对象 |
- 返回值描述:
事务结果,参见:LocalTransactionState
类。
- 异常描述:
RuntimeException - 永远抛出该异常。
- sendMessageInTransaction
public TransactionSendResult sendMessageInTransaction(Message msg, final Object arg)
发送事务消息。该类不做默认实现,抛出RuntimeException
异常。参见:TransactionMQProducer
类。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Message | 是 | | | 待投递的事务消息 |
| Object | 是 | | | 供本地事务执行程序使用的参数对象 |
- 返回值描述:
事务结果,参见:LocalTransactionState
类。
- 异常描述:
RuntimeException - 永远抛出该异常。
- sendOneway
public void sendOneway(Message msg)
以oneway形式发送消息,broker不会响应任何执行结果,和UDP类似。它具有最大的吞吐量但消息可能会丢失。
可在消息量大,追求高吞吐量并允许消息丢失的情况下使用该方式。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Message | 是 | | | 待投递的消息 |
- 返回值描述:
void
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
InterruptedException - 发送线程中断。
- sendOneway
public void sendOneway(Message msg, MessageQueue mq)
向指定队列以oneway形式发送消息,broker不会响应任何执行结果,和UDP类似。它具有最大的吞吐量但消息可能会丢失。
可在消息量大,追求高吞吐量并允许消息丢失的情况下使用该方式。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Message | 是 | | | 待投递的消息 |
| MessageQueue | 是 | | | 待投递的消息队列 |
- 返回值描述:
void
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
InterruptedException - 发送线程中断。
- sendOneway
public void sendOneway(Message msg, MessageQueueSelector selector, Object arg)
向通过MessageQueueSelector
计算出的队列以oneway形式发送消息,broker不会响应任何执行结果,和UDP类似。它具有最大的吞吐量但消息可能会丢失。
可在消息量大,追求高吞吐量并允许消息丢失的情况下使用该方式。
- 入参描述:
| 类型 | 是否必须 | 默认值 | 值范围 | 说明 |
| — | — | — | — | — |
| Message | 是 | | | 待发送的消息。 |
| ctor | MessageQueueSelector | 是 | | |
| Object | 否 | | | 供队列选择器使用的参数对象。 |
- 返回值描述:
void
- 异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
InterruptedException - 发送线程中断。
- shutdown
public void shutdown()
关闭当前生产者实例并释放相关资源。
- 入参描述:
无。
- 返回值描述:
void
- 异常描述:
- start
public void start()
启动生产者实例。在发送或查询消息之前必须调用此方法。它执行了许多内部初始化,比如:检查配置、与namesrv建立连接、启动一系列心跳等定时任务等。
- 入参描述:
无。
- 返回值描述:
void
- 异常描述: