public class DefaultMQPullConsumer extends ClientConfig implements MQPullConsumer
| 限定符和类型 | 字段和说明 |
|---|---|
protected DefaultMQPullConsumerImpl |
defaultMQPullConsumerImpl |
| 构造器和说明 |
|---|
DefaultMQPullConsumer() |
DefaultMQPullConsumer(String consumerGroup) |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
createTopic(String key,
String newTopic,
int queueNum)
创建topic
|
long |
earliestMsgStoreTime(MessageQueue mq)
向服务器查询队列保存的最早消息对应的存储时间
|
long |
fetchConsumeOffset(MessageQueue mq,
boolean fromStore)
获取消费进度,返回-1表示出错
|
Set<MessageQueue> |
fetchMessageQueuesInBalance(String topic)
根据topic获取MessageQueue,以均衡方式在组内多个成员之间分配
|
Set<MessageQueue> |
fetchSubscribeMessageQueues(String topic)
根据topic获取对应的MessageQueue,是可被订阅的队列
P.S 从Consumer Cache中拿数据,可以频繁调用。 |
AllocateMessageQueueStrategy |
getAllocateMessageQueueStrategy() |
long |
getBrokerSuspendMaxTimeMillis() |
String |
getConsumerGroup() |
long |
getConsumerPullTimeoutMillis() |
long |
getConsumerTimeoutMillisWhenSuspend() |
DefaultMQPullConsumerImpl |
getDefaultMQPullConsumerImpl() |
MessageModel |
getMessageModel() |
MessageQueueListener |
getMessageQueueListener() |
OffsetStore |
getOffsetStore() |
Set<String> |
getRegisterTopics() |
long |
maxOffset(MessageQueue mq)
向服务器查询队列最大Offset PS: 最大Offset无对应消息,减1有消息
|
long |
minOffset(MessageQueue mq)
向服务器查询队列最小Offset PS: 最小Offset有对应消息
|
PullResult |
pull(MessageQueue mq,
String subExpression,
long offset,
int maxNums)
指定队列,主动拉取消息,即使没有消息,也立刻返回
|
void |
pull(MessageQueue mq,
String subExpression,
long offset,
int maxNums,
PullCallback pullCallback) |
PullResult |
pullBlockIfNotFound(MessageQueue mq,
String subExpression,
long offset,
int maxNums)
指定队列,主动拉取消息,如果没有消息,则broker阻塞一段时间再返回(时间可配置)
broker阻塞期间,如果有消息,则立刻将消息返回 |
void |
pullBlockIfNotFound(MessageQueue mq,
String subExpression,
long offset,
int maxNums,
PullCallback pullCallback) |
QueryResult |
queryMessage(String topic,
String key,
int maxNum,
long begin,
long end)
根据消息Key查询消息
|
void |
registerMessageQueueListener(String topic,
MessageQueueListener listener)
注册监听队列变化的listener对象
|
long |
searchOffset(MessageQueue mq,
long timestamp)
根据时间查询对应的offset,精确到毫秒
P.S. |
void |
sendMessageBack(MessageExt msg,
int delayLevel)
Consumer消费失败的消息可以选择重新发回到服务器端,并延时消费
会首先尝试将消息发回到消息之前存储的主机,此时只传送消息Offset,消息体不传送,不会占用网络带宽 如果发送失败,会自动重试发往其他主机,此时消息体也会传送 重传回去的消息只会被当前Consumer Group消费。 |
void |
setAllocateMessageQueueStrategy(AllocateMessageQueueStrategy allocateMessageQueueStrategy) |
void |
setBrokerSuspendMaxTimeMillis(long brokerSuspendMaxTimeMillis) |
void |
setConsumerGroup(String consumerGroup) |
void |
setConsumerPullTimeoutMillis(long consumerPullTimeoutMillis) |
void |
setConsumerTimeoutMillisWhenSuspend(long consumerTimeoutMillisWhenSuspend) |
void |
setMessageModel(MessageModel messageModel) |
void |
setMessageQueueListener(MessageQueueListener messageQueueListener) |
void |
setOffsetStore(OffsetStore offsetStore) |
void |
setRegisterTopics(Set<String> registerTopics) |
void |
shutdown()
关闭服务
|
void |
start()
启动服务
|
void |
updateConsumeOffset(MessageQueue mq,
long offset)
更新消费进度
只是更新Consumer缓存中的数据,如果是广播模式,则定时更新到本地存储 如果是集群模式,则定时更新到远端Broker P.S. |
MessageExt |
viewMessage(String msgId)
根据消息ID,从服务器获取完整的消息
|
buildMQClientId, cloneClientConfig, getClientCallbackExecutorThreads, getClientIP, getHeartbeatBrokerInterval, getInstanceName, getNamesrvAddr, getPersistConsumerOffsetInterval, getPollNameServerInteval, resetClientConfig, setClientCallbackExecutorThreads, setClientIP, setHeartbeatBrokerInterval, setInstanceName, setNamesrvAddr, setPersistConsumerOffsetInterval, setPollNameServerInteval, toStringprotected final transient DefaultMQPullConsumerImpl defaultMQPullConsumerImpl
public DefaultMQPullConsumer()
public DefaultMQPullConsumer(String consumerGroup)
public void createTopic(String key, String newTopic, int queueNum) throws MQClientException
MQAdmincreateTopic 在接口中 MQAdminkey - 请向运维人员申请newTopic - 要创建的新topicqueueNum - 新topic队列数MQClientExceptionpublic long searchOffset(MessageQueue mq, long timestamp) throws MQClientException
MQAdminsearchOffset 在接口中 MQAdminmq - 队列timestamp - 毫秒形式时间戳MQClientExceptionpublic long maxOffset(MessageQueue mq) throws MQClientException
MQAdminmaxOffset 在接口中 MQAdminmq - 队列MQClientExceptionpublic long minOffset(MessageQueue mq) throws MQClientException
MQAdminminOffset 在接口中 MQAdminmq - 队列MQClientExceptionpublic long earliestMsgStoreTime(MessageQueue mq) throws MQClientException
MQAdminearliestMsgStoreTime 在接口中 MQAdminmq - 队列MQClientExceptionpublic MessageExt viewMessage(String msgId) throws com.alibaba.rocketmq.remoting.exception.RemotingException, MQBrokerException, InterruptedException, MQClientException
MQAdminviewMessage 在接口中 MQAdmincom.alibaba.rocketmq.remoting.exception.RemotingExceptionMQBrokerExceptionInterruptedExceptionMQClientExceptionpublic QueryResult queryMessage(String topic, String key, int maxNum, long begin, long end) throws MQClientException, InterruptedException
MQAdminqueryMessage 在接口中 MQAdmintopic - 消息主题key - 消息关键词maxNum - 查询最大条数begin - 起始时间戳end - 结束时间戳MQClientExceptionInterruptedExceptionpublic AllocateMessageQueueStrategy getAllocateMessageQueueStrategy()
public void setAllocateMessageQueueStrategy(AllocateMessageQueueStrategy allocateMessageQueueStrategy)
public long getBrokerSuspendMaxTimeMillis()
public void setBrokerSuspendMaxTimeMillis(long brokerSuspendMaxTimeMillis)
public String getConsumerGroup()
public void setConsumerGroup(String consumerGroup)
public long getConsumerPullTimeoutMillis()
public void setConsumerPullTimeoutMillis(long consumerPullTimeoutMillis)
public long getConsumerTimeoutMillisWhenSuspend()
public void setConsumerTimeoutMillisWhenSuspend(long consumerTimeoutMillisWhenSuspend)
public MessageModel getMessageModel()
public void setMessageModel(MessageModel messageModel)
public MessageQueueListener getMessageQueueListener()
public void setMessageQueueListener(MessageQueueListener messageQueueListener)
public void sendMessageBack(MessageExt msg, int delayLevel) throws com.alibaba.rocketmq.remoting.exception.RemotingException, MQBrokerException, InterruptedException, MQClientException
MQConsumersendMessageBack 在接口中 MQConsumercom.alibaba.rocketmq.remoting.exception.RemotingExceptionMQBrokerExceptionInterruptedExceptionMQClientExceptionpublic Set<MessageQueue> fetchSubscribeMessageQueues(String topic) throws MQClientException
MQConsumerfetchSubscribeMessageQueues 在接口中 MQConsumertopic - 消息TopicMQClientExceptionpublic void start()
throws MQClientException
MQPullConsumerstart 在接口中 MQPullConsumerMQClientExceptionpublic void shutdown()
MQPullConsumershutdown 在接口中 MQPullConsumerpublic void registerMessageQueueListener(String topic, MessageQueueListener listener)
MQPullConsumerregisterMessageQueueListener 在接口中 MQPullConsumerlistener - 一旦发生变化,客户端会主动回调listener对象public PullResult pull(MessageQueue mq, String subExpression, long offset, int maxNums) throws MQClientException, com.alibaba.rocketmq.remoting.exception.RemotingException, MQBrokerException, InterruptedException
MQPullConsumerpull 在接口中 MQPullConsumermq - 指定具体要拉取的队列subExpression - 订阅过滤表达式字符串,broker依据此表达式进行过滤。目前只支持或运算offset - 从指定队列哪个位置开始拉取maxNums - 一次最多拉取条数MQClientExceptioncom.alibaba.rocketmq.remoting.exception.RemotingExceptionMQBrokerExceptionInterruptedExceptionpublic void pull(MessageQueue mq, String subExpression, long offset, int maxNums, PullCallback pullCallback) throws MQClientException, com.alibaba.rocketmq.remoting.exception.RemotingException, InterruptedException
pull 在接口中 MQPullConsumerMQClientExceptioncom.alibaba.rocketmq.remoting.exception.RemotingExceptionInterruptedExceptionpublic PullResult pullBlockIfNotFound(MessageQueue mq, String subExpression, long offset, int maxNums) throws MQClientException, com.alibaba.rocketmq.remoting.exception.RemotingException, MQBrokerException, InterruptedException
MQPullConsumerpullBlockIfNotFound 在接口中 MQPullConsumermq - 指定具体要拉取的队列subExpression - 订阅过滤表达式字符串,broker依据此表达式进行过滤。目前只支持或运算offset - 从指定队列哪个位置开始拉取maxNums - 一次最多拉取条数MQClientExceptioncom.alibaba.rocketmq.remoting.exception.RemotingExceptionMQBrokerExceptionInterruptedExceptionpublic void pullBlockIfNotFound(MessageQueue mq, String subExpression, long offset, int maxNums, PullCallback pullCallback) throws MQClientException, com.alibaba.rocketmq.remoting.exception.RemotingException, InterruptedException
pullBlockIfNotFound 在接口中 MQPullConsumerMQClientExceptioncom.alibaba.rocketmq.remoting.exception.RemotingExceptionInterruptedExceptionpublic void updateConsumeOffset(MessageQueue mq, long offset) throws MQClientException
MQPullConsumerupdateConsumeOffset 在接口中 MQPullConsumerMQClientExceptionpublic long fetchConsumeOffset(MessageQueue mq, boolean fromStore) throws MQClientException
MQPullConsumerfetchConsumeOffset 在接口中 MQPullConsumerMQClientExceptionpublic Set<MessageQueue> fetchMessageQueuesInBalance(String topic) throws MQClientException
MQPullConsumerfetchMessageQueuesInBalance 在接口中 MQPullConsumertopic - 消息TopicMQClientExceptionpublic OffsetStore getOffsetStore()
public void setOffsetStore(OffsetStore offsetStore)
public DefaultMQPullConsumerImpl getDefaultMQPullConsumerImpl()
Copyright © 2012–2013. All rights reserved.