Message message = new Message(JmsConfig.TOPIC,"taga" ,"6688" , ("hello xdclass rocketmq = "+text).getBytes() );
SendResult sendResult = payProducer.getProducer().send(message, new MessageQueueSelector() {
@Override
public MessageQueue select(List<MessageQueue> list, Message message, Object o) {
int queueNum = Integer.parseInt(o.toString());
return list.get(queueNum);
}
},0);
System.out.println(sendResult.toString());
默认一个topic 有4个队列,下标:0-3 ;
这里要重写该构造方法, 0 表示的是指投递第一个队列queue
查看控制台日志:
SendResult [sendStatus=SEND_OK, msgId=C0A80070082C18B4AAC247549DFA0008, offsetMsgId=C0A8218100002A9F000000000002D924, messageQueue=MessageQueue [topic=xdclass_pay_test_topic_666, brokerName=broker-a, queueId=0], queueOffset=10]
SendResult [sendStatus=SEND_OK, msgId=C0A80070082C18B4AAC247549E720009, offsetMsgId=C0A8218100002A9F000000000002D9FE, messageQueue=MessageQueue [topic=xdclass_pay_test_topic_666, brokerName=broker-a, queueId=0], queueOffset=11]
该消息只投递到了 queueId= 0 的队列
投递的Id设置必须小于总的队列数