下载地址:http://rocketmq.apache.org/dowloading/releases/
消息队列 RocketMQ 版是阿里云基于 Apache RocketMQ 构建的低延迟、高并发、高可用、高可靠的分布式消息中间件。该产品最初由阿里巴巴自研并捐赠给 Apache 基金会,服务于阿里集团 13 年,覆盖全集团所有业务。作为双十一交易核心链路的官方指定产品,支撑千万级并发、万亿级数据洪峰,历年刷新全球最大的交易消息流转记录。
1启动NareServer
启动服务:nohup sh bin/namesrv &
查看启动日志:tail -f -/1ogs/rocketmq10gs/namesrv. log
2启动Broker
启动客户:nohup sh bin/mqbroker -n locaThost:9876 &
查看启动日志:tail -f -/1ogs/rocketmq1ogs/broker.1og
编辑jvm内存大小
vi runbroker. sh
vi runserver. sh
参考设置
JAVA OPT-"S{JAVA OPT} -server -Xms256m -Xmx256m -Xrmn128m -Xx:Metaspacesize-128m
关闭RocketMQ
1关闭NareServer
sh bin/nqshutdown namesrv
2关闭Broker
sh bin/nqshutdown broker
查看启动是否成功
jpa
发送消息
1设置环境变量 export NANESRV_ ADDR=localhost:9876
2. 使用安装包的Demo发送消息 sh bin/tools. sh org. apache. rocketmq. example. quickstart. Producer
接受消息
1.设置环境变量 export NANESRV_ ADDR- loca 1host :9876
2.接受消息 sh bin/mqshutdown namesrv
RocketMQ集群搭建
3. RocketMQ集群搭建
●Producer: 消息的发送者:举例:发信者
●Consumer:消息接受者:举例:收信者
●Broker: 暂存和传输消息;举例:邮局
●NameServer: 管理Broker; 举例:各个邮局的管理机构
●Topic:区分消息的种类: -一个发送者可以发送消息给-个或者多个Topic;一个消息的接受者可以订阅-一个或者多个Topic消息
●Message Queue:相当于是Topic的分区;用于并行发送和接受消息
参考地址
http://rocketmq.apache.org/docs/quick-start/
依赖包
org.apache.rocketmq
rocketmq-client
4.3.0
类简介
public class DefaultMQProducer extends ClientConfig implements MQProducer
DefaultMQProducer类是应用用来投递消息的入口,开箱即用,可通过无参构造方法快速创建一个生产者。主要负责消息的发送,支持同步/异步/oneway的发送方式,这些发送方式均支持批量发送。可以通过该类提供的getter/setter方法,调整发送者的参数。DefaultMQProducer提供了多个send方法,每个send方法略有不同,在使用前务必详细了解其意图。下面给出一个生产者示例代码,点击查看更多示例代码。
public class Producer {
public static void main(String[] args) throws MQClientException {
// 创建指定分组名的生产者
DefaultMQProducer producer = new DefaultMQProducer(“ProducerGroupName”);
// 启动生产者
producer.start();
for (int i = 0; i < 128; i++)
try {
// 构建消息
Message msg = new Message("TopicTest",
"TagA",
"OrderID188",
"Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));
// 同步发送
SendResult sendResult = producer.send(msg);
// 打印发送结果
System.out.printf("%s%n", sendResult);
} catch (Exception e) {
e.printStackTrace();
}
producer.shutdown();
}
}
注意:该类是线程安全的。在配置并启动完成后可在多个线程间安全共享。
字段摘要
类型 字段名称 描述
DefaultMQProducerImpl defaultMQProducerImpl 生产者的内部默认实现
String producerGroup 生产者分组
String createTopicKey 在发送消息时,自动创建服务器不存在的topic
int defaultTopicQueueNums 创建topic时默认的队列数量
int sendMsgTimeout 发送消息的超时时间
int compressMsgBodyOverHowmuch 压缩消息体的阈值
int retryTimesWhenSendFailed 同步模式下内部尝试发送消息的最大次数
int retryTimesWhenSendAsyncFailed 异步模式下内部尝试发送消息的最大次数
boolean retryAnotherBrokerWhenNotStoreOK 是否在内部发送失败时重试另一个broker
int maxMessageSize 消息的最大长度
TraceDispatcher traceDispatcher 消息追踪器。使用rcpHook来追踪消息
构造方法摘要
方法名称 方法描述
DefaultMQProducer() 由默认参数值创建一个生产者
DefaultMQProducer(final String producerGroup) 使用指定的分组名创建一个生产者
DefaultMQProducer(final String producerGroup, boolean enableMsgTrace) 使用指定的分组名创建一个生产者,并设置是否开启消息追踪
DefaultMQProducer(final String producerGroup, boolean enableMsgTrace, final String customizedTraceTopic) 使用指定的分组名创建一个生产者,并设置是否开启消息追踪及追踪topic的名称
DefaultMQProducer(RPCHook rpcHook) 使用指定的hook创建一个生产者
DefaultMQProducer(final String producerGroup, RPCHook rpcHook) 使用指定的分组名及自定义hook创建一个生产者
DefaultMQProducer(final String producerGroup, RPCHook rpcHook, boolean enableMsgTrace,final String customizedTraceTopic) 使用指定的分组名及自定义hook创建一个生产者,并设置是否开启消息追踪及追踪topic的名称
使用方法摘要
返回值 方法名称 方法描述
void createTopic(String key, String newTopic, int queueNum) 在broker上创建指定的topic
void createTopic(String key, String newTopic, int queueNum, int topicSysFlag) 在broker上创建指定的topic
long earliestMsgStoreTime(MessageQueue mq) 查询最早的消息存储时间
List fetchPublishMessageQueues(String topic) 获取topic的消息队列
long maxOffset(MessageQueue mq) 查询给定消息队列的最大offset
long minOffset(MessageQueue mq) 查询给定消息队列的最小offset
QueryResult queryMessage(String topic, String key, int maxNum, long begin, long end) 按关键字查询消息
long searchOffset(MessageQueue mq, long timestamp) 查找指定时间的消息队列的物理offset
SendResult send(Collection msgs) 同步批量发送消息
SendResult send(Collection msgs, long timeout) 同步批量发送消息
SendResult send(Collection msgs, MessageQueue messageQueue) 向指定的消息队列同步批量发送消息
SendResult send(Collection msgs, MessageQueue messageQueue, long timeout) 向指定的消息队列同步批量发送消息,并指定超时时间
SendResult send(Message msg) 同步单条发送消息
SendResult send(Message msg, long timeout) 同步发送单条消息,并指定超时时间
SendResult send(Message msg, MessageQueue mq) 向指定的消息队列同步发送单条消息
SendResult send(Message msg, MessageQueue mq, long timeout) 向指定的消息队列同步单条发送消息,并指定超时时间
void send(Message msg, MessageQueue mq, SendCallback sendCallback) 向指定的消息队列异步单条发送消息,并指定回调方法
void send(Message msg, MessageQueue mq, SendCallback sendCallback, long timeout) 向指定的消息队列异步单条发送消息,并指定回调方法和超时时间
SendResult send(Message msg, MessageQueueSelector selector, Object arg) 向消息队列同步单条发送消息,并指定发送队列选择器
SendResult send(Message msg, MessageQueueSelector selector, Object arg, long timeout) 向消息队列同步单条发送消息,并指定发送队列选择器与超时时间
void send(Message msg, MessageQueueSelector selector, Object arg, SendCallback sendCallback) 向指定的消息队列异步单条发送消息
void send(Message msg, MessageQueueSelector selector, Object arg, SendCallback sendCallback, long timeout) 向指定的消息队列异步单条发送消息,并指定超时时间
void send(Message msg, SendCallback sendCallback) 异步发送消息
void send(Message msg, SendCallback sendCallback, long timeout) 异步发送消息,并指定回调方法和超时时间
TransactionSendResult sendMessageInTransaction(Message msg, LocalTransactionExecuter tranExecuter, final Object arg) 发送事务消息,并指定本地执行事务实例
TransactionSendResult sendMessageInTransaction(Message msg, Object arg) 发送事务消息
void sendOneway(Message msg) 单向发送消息,不等待broker响应
void sendOneway(Message msg, MessageQueue mq) 单向发送消息到指定队列,不等待broker响应
void sendOneway(Message msg, MessageQueueSelector selector, Object arg) 单向发送消息到队列选择器的选中的队列,不等待broker响应
void shutdown() 关闭当前生产者实例并释放相关资源
void start() 启动生产者
MessageExt viewMessage(String offsetMsgId) 根据给定的msgId查询消息
MessageExt public MessageExt viewMessage(String topic, String msgId) 根据给定的msgId查询消息,并指定topic
字段详细信息
producerGroup
private String producerGroup
生产者的分组名称。相同的分组名称表明生产者实例在概念上归属于同一分组。这对事务消息十分重要,如果原始生产者在事务之后崩溃,那么broker可以联系同一生产者分组的不同生产者实例来提交或回滚事务。
默认值:DEFAULT_PRODUCER
注意: 由数字、字母、下划线、横杠(-)、竖线(|)或百分号组成;不能为空;长度不能超过255。
defaultMQProducerImpl
protected final transient DefaultMQProducerImpl defaultMQProducerImpl
生产者的内部默认实现,在构造生产者时内部自动初始化,提供了大部分方法的内部实现。
createTopicKey
private String createTopicKey = MixAll.AUTO_CREATE_TOPIC_KEY_TOPIC
在发送消息时,自动创建服务器不存在的topic,需要指定Key,该Key可用于配置发送消息所在topic的默认路由。
默认值:TBW102
建议:测试或者demo使用,生产环境下不建议打开自动创建配置。
defaultTopicQueueNums
private volatile int defaultTopicQueueNums = 4
创建topic时默认的队列数量。
默认值:4
sendMsgTimeout
private int sendMsgTimeout = 3000
发送消息时的超时时间。
默认值:3000,单位:毫秒
建议:不建议修改该值,该值应该与broker配置中的sendTimeout一致,发送超时,可临时修改该值,建议解决超时问题,提高broker集群的Tps。
compressMsgBodyOverHowmuch
private int compressMsgBodyOverHowmuch = 1024 * 4
压缩消息体阈值。大于4K的消息体将默认进行压缩。
默认值:1024 * 4,单位:字节
建议:可通过DefaultMQProducerImpl.setZipCompressLevel方法设置压缩率(默认为5,可选范围[0,9]);可通过DefaultMQProducerImpl.tryToCompressMessage方法测试出compressLevel与compressMsgBodyOverHowmuch最佳值。
retryTimesWhenSendFailed
private int retryTimesWhenSendFailed = 2
同步模式下,在返回发送失败之前,内部尝试重新发送消息的最大次数。
默认值:2,即:默认情况下一条消息最多会被投递3次。
注意:在极端情况下,这可能会导致消息的重复。
retryTimesWhenSendAsyncFailed
private int retryTimesWhenSendAsyncFailed = 2
异步模式下,在发送失败之前,内部尝试重新发送消息的最大次数。
默认值:2,即:默认情况下一条消息最多会被投递3次。
注意:在极端情况下,这可能会导致消息的重复。
retryAnotherBrokerWhenNotStoreOK
private boolean retryAnotherBrokerWhenNotStoreOK = false
同步模式下,消息保存失败时是否重试其他broker。
默认值:false
注意:此配置关闭时,非投递时产生异常情况下,会忽略retryTimesWhenSendFailed配置。
maxMessageSize
private int maxMessageSize = 1024 * 1024 * 4
消息的最大大小。当消息题的字节数超过maxMessageSize就发送失败。
默认值:1024 * 1024 * 4,单位:字节
traceDispatcher
private TraceDispatcher traceDispatcher = null
在开启消息追踪后,该类通过hook的方式把消息生产者,消息存储的broker和消费者消费消息的信息像链路一样记录下来。在构造生产者时根据构造入参enableMsgTrace来决定是否创建该对象。
构造方法详细信息
DefaultMQProducer
public DefaultMQProducer()
创建一个新的生产者。
DefaultMQProducer
DefaultMQProducer(final String producerGroup)
使用指定的分组名创建一个生产者。
入参描述:
参数名 类型 是否必须 缺省值 描述
producerGroup String 是 DEFAULT_PRODUCER 生产者的分组名称
DefaultMQProducer
DefaultMQProducer(final String producerGroup, boolean enableMsgTrace)
使用指定的分组名创建一个生产者,并设置是否开启消息追踪。
入参描述:
参数名 类型 是否必须 缺省值 描述
producerGroup String 是 DEFAULT_PRODUCER 生产者的分组名称
enableMsgTrace boolean 是 false 是否开启消息追踪
DefaultMQProducer
DefaultMQProducer(final String producerGroup, boolean enableMsgTrace, final String customizedTraceTopic)
使用指定的分组名创建一个生产者,并设置是否开启消息追踪及追踪topic的名称。
入参描述:
参数名 类型 是否必须 缺省值 描述
producerGroup String 是 DEFAULT_PRODUCER 生产者的分组名称
rpcHook RPCHook 否 null 每个远程命令执行后会回调rpcHook
enableMsgTrace boolean 是 false 是否开启消息追踪
customizedTraceTopic String 否 RMQ_SYS_TRACE_TOPIC 消息跟踪topic的名称
DefaultMQProducer
DefaultMQProducer(RPCHook rpcHook)
使用指定的hook创建一个生产者。
入参描述:
参数名 类型 是否必须 缺省值 描述
rpcHook RPCHook 否 null 每个远程命令执行后会回调rpcHook
DefaultMQProducer
DefaultMQProducer(final String producerGroup, RPCHook rpcHook)
使用指定的分组名及自定义hook创建一个生产者。
入参描述:
参数名 类型 是否必须 缺省值 描述
producerGroup String 是 DEFAULT_PRODUCER 生产者的分组名称
rpcHook RPCHook 否 null 每个远程命令执行后会回调rpcHook
DefaultMQProducer
DefaultMQProducer(final String producerGroup, RPCHook rpcHook, boolean enableMsgTrace,final String customizedTraceTopic)
使用指定的分组名及自定义hook创建一个生产者,并设置是否开启消息追踪及追踪topic的名称。
入参描述:
参数名 类型 是否必须 缺省值 描述
producerGroup String 是 DEFAULT_PRODUCER 生产者的分组名称
rpcHook RPCHook 否 null 每个远程命令执行后会回调rpcHook
enableMsgTrace boolean 是 false 是否开启消息追踪
customizedTraceTopic String 否 RMQ_SYS_TRACE_TOPIC 消息跟踪topic的名称
使用方法详细信息
createTopic
public void createTopic(String key, String newTopic, int queueNum)
在broker上创建一个topic。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
key String 是 访问密钥。
newTopic String 是 新建topic的名称。由数字、字母、下划线(_)、横杠(-)、竖线(|)或百分号(%)组成;
长度小于255;不能为TBW102或空。
queueNum int 是 0 (0, maxIntValue] topic的队列数量。
返回值描述:
void
异常描述:
MQClientException - 生产者状态非Running;未找到broker等客户端异常。
createTopic
public void createTopic(String key, String newTopic, int queueNum, int topicSysFlag)
在broker上创建一个topic。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
key String 是 访问密钥。
newTopic String 是 新建topic的名称。
queueNum int 是 0 (0, maxIntValue] topic的队列数量。
topicSysFlag int 是 0 保留字段,暂未使用。
返回值描述:
void
异常描述:
MQClientException - 生产者状态非Running;未找到broker等客户端异常。
earliestMsgStoreTime
public long earliestMsgStoreTime(MessageQueue mq)
查询最早的消息存储时间。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
mq MessageQueue 是 要查询的消息队列
返回值描述:
指定队列最早的消息存储时间。单位:毫秒。
异常描述:
MQClientException - 生产者状态非Running;没有找到broker;broker返回失败;网络异常;线程中断等客户端异常。
fetchPublishMessageQueues
public List fetchPublishMessageQueues(String topic)
获取topic的消息队列。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
topic String 是 topic名称
返回值描述:
传入topic下的消息队列。
异常描述:
MQClientException - 生产者状态非Running;没有找到broker;broker返回失败;网络异常;线程中断等客户端异常。
maxOffset
public long maxOffset(MessageQueue mq)
查询消息队列的最大物理偏移量。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
mq MessageQueue 是 要查询的消息队列
返回值描述:
给定消息队列的最大物理偏移量。
异常描述:
MQClientException - 生产者状态非Running;没有找到broker;broker返回失败;网络异常;线程中断等客户端异常。
minOffset
public long minOffset(MessageQueue mq)
查询给定消息队列的最小物理偏移量。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
mq MessageQueue 是 要查询的消息队列
返回值描述:
给定消息队列的最小物理偏移量。
异常描述:
MQClientException - 生产者状态非Running;没有找到broker;broker返回失败;网络异常;线程中断等客户端异常。
queryMessage
public QueryResult queryMessage(String topic, String key, int maxNum, long begin, long end)
按关键字查询消息。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
topic String 是 topic名称
key String 否 null 查找的关键字
maxNum int 是 返回消息的最大数量
begin long 是 开始时间戳,单位:毫秒
end long 是 结束时间戳,单位:毫秒
返回值描述:
查询到的消息集合。
异常描述:
MQClientException - 生产者状态非Running;没有找到broker;broker返回失败;网络异常等客户端异常客户端异常。
InterruptedException - 线程中断。
searchOffset
public long searchOffset(MessageQueue mq, long timestamp)
查找指定时间的消息队列的物理偏移量。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
mq MessageQueue 是 要查询的消息队列。
timestamp long 是 指定要查询时间的时间戳。单位:毫秒。
返回值描述:
指定时间的消息队列的物理偏移量。
异常描述:
MQClientException - 生产者状态非Running;没有找到broker;broker返回失败;网络异常;线程中断等客户端异常。
send
public SendResult send(Collection msgs)
同步批量发送消息。在返回发送失败之前,内部尝试重新发送消息的最大次数(参见retryTimesWhenSendFailed属性)。未明确指定发送队列,默认采取轮询策略发送。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msgs Collection 是 待发送的消息集合。集合内的消息必须属同一个topic。
返回值描述:
批量消息的发送结果,包含msgId,发送状态等信息。
异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
MQBrokerException - broker发生错误。
InterruptedException - 发送线程中断。
RemotingTooMuchRequestException - 发送超时。
send
public SendResult send(Collection msgs, long timeout)
同步批量发送消息,如果在指定的超时时间内未完成消息投递,会抛出RemotingTooMuchRequestException。 在返回发送失败之前,内部尝试重新发送消息的最大次数(参见retryTimesWhenSendFailed属性)。未明确指定发送队列,默认采取轮询策略发送。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msgs Collection 是 待发送的消息集合。集合内的消息必须属同一个topic。
timeout long 是 参见sendMsgTimeout属性 发送超时时间,单位:毫秒。
返回值描述:
批量消息的发送结果,包含msgId,发送状态等信息。
异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
MQBrokerException - broker发生错误。
InterruptedException - 发送线程中断。
RemotingTooMuchRequestException - 发送超时。
send
public SendResult send(Collection msgs, MessageQueue messageQueue)
向给定队列同步批量发送消息。
注意:指定队列意味着所有消息均为同一个topic。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msgs Collection 是 待发送的消息集合。集合内的消息必须属同一个topic。
messageQueue MessageQueue 是 待投递的消息队列。指定队列意味着待投递消息均为同一个topic。
返回值描述:
批量消息的发送结果,包含msgId,发送状态等信息。
异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
MQBrokerException - broker发生错误。
InterruptedException - 发送线程中断。
RemotingTooMuchRequestException - 发送超时。
send
public SendResult send(Collection msgs, MessageQueue messageQueue, long timeout)
向给定队列同步批量发送消息,如果在指定的超时时间内未完成消息投递,会抛出RemotingTooMuchRequestException。
注意:指定队列意味着所有消息均为同一个topic。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msgs Collection 是 待发送的消息集合。集合内的消息必须属同一个topic。
timeout long 是 参见sendMsgTimeout属性 发送超时时间,单位:毫秒。
messageQueue MessageQueue 是 待投递的消息队列。指定队列意味着待投递消息均为同一个topic。
返回值描述:
批量消息的发送结果,包含msgId,发送状态等信息。
异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
MQBrokerException - broker发生错误。
InterruptedException - 发送线程中断。
RemotingTooMuchRequestException - 发送超时。
send
public SendResult send(Message msg)
以同步模式发送消息,仅当发送过程完全完成时,此方法才会返回。 在返回发送失败之前,内部尝试重新发送消息的最大次数(参见retryTimesWhenSendFailed属性)。未明确指定发送队列,默认采取轮询策略发送。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msg Message 是 待发送的消息。
返回值描述:
消息的发送结果,包含msgId,发送状态等信息。
异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
MQBrokerException - broker发生错误。
InterruptedException - 发送线程中断。
RemotingTooMuchRequestException - 发送超时。
send
public SendResult send(Message msg, long timeout)
以同步模式发送消息,如果在指定的超时时间内未完成消息投递,会抛出RemotingTooMuchRequestException。仅当发送过程完全完成时,此方法才会返回。 在返回发送失败之前,内部尝试重新发送消息的最大次数(参见retryTimesWhenSendFailed属性)。未明确指定发送队列,默认采取轮询策略发送。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msg Message 是 待发送的消息。
timeout long 是 参见sendMsgTimeout属性 发送超时时间,单位:毫秒。
返回值描述:
消息的发送结果,包含msgId,发送状态等信息。
异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
MQBrokerException - broker发生错误。
InterruptedException - 发送线程中断。
RemotingTooMuchRequestException - 发送超时。
send
public SendResult send(Message msg, MessageQueue mq)
向指定的消息队列同步发送单条消息。仅当发送过程完全完成时,此方法才会返回。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msg Message 是 待发送的消息。
mq MessageQueue 是 待投递的消息队列。
返回值描述:
消息的发送结果,包含msgId,发送状态等信息。
异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
MQBrokerException - broker发生错误。
InterruptedException - 发送线程中断。
RemotingTooMuchRequestException - 发送超时。
send
public SendResult send(Message msg, MessageQueue mq, long timeout)
向指定的消息队列同步发送单条消息,如果在指定的超时时间内未完成消息投递,会抛出RemotingTooMuchRequestException。仅当发送过程完全完成时,此方法才会返回。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msg Message 是 待发送的消息。
timeout long 是 参见sendMsgTimeout属性 发送超时时间,单位:毫秒。
mq 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属性)。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msg Message 是 待发送的消息。
mq MessageQueue 是 待投递的消息队列。指定队列意味着待投递消息均为同一个topic。
sendCallback 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属性)。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msg Message 是 待发送的消息。
mq MessageQueue 是 待投递的消息队列。
sendCallback SendCallback 是 回调接口的实现。
timeout long 是 参见sendMsgTimeout属性 发送超时时间,单位:毫秒。
返回值描述: void
异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
InterruptedException - 发送线程中断。
send
public SendResult send(Message msg, MessageQueueSelector selector, Object arg)
向通过MessageQueueSelector计算出的队列同步发送消息。
可以通过自实现MessageQueueSelector接口,将某一类消息发送至固定的队列。比如:将同一个订单的状态变更消息投递至固定的队列。
注意:此消息发送失败内部不会重试。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msg Message 是 待发送的消息。
selector MessageQueueSelector 是 队列选择器。
arg 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接口,将某一类消息发送至固定的队列。比如:将同一个订单的状态变更消息投递至固定的队列。
注意:此消息发送失败内部不会重试。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msg Message 是 待发送的消息。
selector MessageQueueSelector 是 队列选择器。
arg Object 否 供队列选择器使用的参数对象。
timeout 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接口,将某一类消息发送至固定的队列。比如:将同一个订单的状态变更消息投递至固定的队列。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msg Message 是 待发送的消息。
selector MessageQueueSelector 是 队列选择器。
arg Object 否 供队列选择器使用的参数对象。
sendCallback 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接口,将某一类消息发送至固定的队列。比如:将同一个订单的状态变更消息投递至固定的队列。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msg Message 是 待发送的消息。
selector MessageQueueSelector 是 队列选择器。
arg Object 否 供队列选择器使用的参数对象。
sendCallback SendCallback 是 回调接口的实现。
timeout long 是 参见sendMsgTimeout属性 发送超时时间,单位:毫秒。
返回值描述:
void
异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
InterruptedException - 发送线程中断。
send
public void send(Message msg, SendCallback sendCallback)
异步发送单条消息,异步发送调用后直接返回,并在在发送成功或者异常时回调sendCallback,所以异步发送时sendCallback参数不能为null,否则在回调时会抛出NullPointerException。 异步发送时,在成功发送前,其内部会尝试重新发送消息的最大次数(参见retryTimesWhenSendAsyncFailed属性)。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msg Message 是 待发送的消息。
sendCallback SendCallback 是 回调接口的实现。
返回值描述:
void
异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
InterruptedException - 发送线程中断。
send
public void send(Message msg, SendCallback sendCallback, long timeout)
异步发送单条消息,异步发送调用后直接返回,并在在发送成功或者异常时回调sendCallback,所以异步发送时sendCallback参数不能为null,否则在回调时会抛出NullPointerException。 异步发送时,在成功发送前,其内部会尝试重新发送消息的最大次数(参见retryTimesWhenSendAsyncFailed属性)。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msg Message 是 待发送的消息。
sendCallback SendCallback 是 回调接口的实现。
timeout long 是 参见sendMsgTimeout属性 发送超时时间,单位:毫秒。
返回值描述:
void
异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
InterruptedException - 发送线程中断。
sendMessageInTransaction
public TransactionSendResult sendMessageInTransaction(Message msg, LocalTransactionExecuter tranExecuter, final Object arg)
发送事务消息。该类不做默认实现,抛出RuntimeException异常。参见:TransactionMQProducer类。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msg Message 是 待投递的事务消息
tranExecuter LocalTransactionExecuter 是 本地事务执行器。该类已过期,将在5.0.0版本中移除。请勿使用该方法。
arg Object 是 供本地事务执行程序使用的参数对象
返回值描述:
事务结果,参见:LocalTransactionState类。
异常描述:
RuntimeException - 永远抛出该异常。
sendMessageInTransaction
public TransactionSendResult sendMessageInTransaction(Message msg, final Object arg)
发送事务消息。该类不做默认实现,抛出RuntimeException异常。参见:TransactionMQProducer类。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msg Message 是 待投递的事务消息
arg Object 是 供本地事务执行程序使用的参数对象
返回值描述:
事务结果,参见:LocalTransactionState类。
异常描述:
RuntimeException - 永远抛出该异常。
sendOneway
public void sendOneway(Message msg)
以oneway形式发送消息,broker不会响应任何执行结果,和UDP类似。它具有最大的吞吐量但消息可能会丢失。
可在消息量大,追求高吞吐量并允许消息丢失的情况下使用该方式。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msg Message 是 待投递的消息
返回值描述:
void
异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
InterruptedException - 发送线程中断。
sendOneway
public void sendOneway(Message msg, MessageQueue mq)
向指定队列以oneway形式发送消息,broker不会响应任何执行结果,和UDP类似。它具有最大的吞吐量但消息可能会丢失。
可在消息量大,追求高吞吐量并允许消息丢失的情况下使用该方式。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msg Message 是 待投递的消息
mq MessageQueue 是 待投递的消息队列
返回值描述: void
异常描述: MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
InterruptedException - 发送线程中断。
sendOneway
public void sendOneway(Message msg, MessageQueueSelector selector, Object arg)
向通过MessageQueueSelector计算出的队列以oneway形式发送消息,broker不会响应任何执行结果,和UDP类似。它具有最大的吞吐量但消息可能会丢失。
可在消息量大,追求高吞吐量并允许消息丢失的情况下使用该方式。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msg Message 是 待发送的消息。
selector MessageQueueSelector 是 队列选择器。
arg Object 否 供队列选择器使用的参数对象。
返回值描述:
void
异常描述:
MQClientException - broker不存在或未找到;namesrv地址为空;未找到topic的路由信息等客户端异常。
RemotingException - 网络异常。
InterruptedException - 发送线程中断。
shutdown
public void shutdown()
关闭当前生产者实例并释放相关资源。
入参描述:
无。
返回值描述:
void
异常描述:
start
public void start()
启动生产者实例。在发送或查询消息之前必须调用此方法。它执行了许多内部初始化,比如:检查配置、与namesrv建立连接、启动一系列心跳等定时任务等。
入参描述:
无。
返回值描述:
void
异常描述:
MQClientException - 初始化过程中出现失败。
viewMessage
public MessageExt viewMessage(String offsetMsgId)
根据给定的msgId查询消息。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
offsetMsgId String 是 offsetMsgId
返回值描述:
返回MessageExt,包含:topic名称,消息题,消息ID,消费次数,生产者host等信息。
异常描述:
RemotingException - 网络层发生错误。
MQBrokerException - broker发生错误。
InterruptedException - 线程被中断。
MQClientException - 生产者状态非Running;msgId非法等。
viewMessage
public MessageExt viewMessage(String topic, String msgId)
根据给定的msgId查询消息,并指定topic。
入参描述:
参数名 类型 是否必须 默认值 值范围 说明
msgId String 是 msgId
topic String 是 topic名称
返回值描述:
返回MessageExt,包含:topic名称,消息题,消息ID,消费次数,生产者host等信息。
异常描述:
RemotingException - 网络层发生错误。
MQBrokerException - broker发生错误。
InterruptedException - 线程被中断。
MQClientException - 生产者状态非Running;msgId非法等。