版权声明: https://blog.csdn.net/W_Leodong/article/details/79881779
一、项目引用
<dependency>
<groupId>com.foriseland.fjf.mq</groupId>
<artifactId>fjf-mq-rocketmq</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
二、配置文件
统一自动走配置中心,配置中心的配置为:
三、代码示例
3.1 创建一对一消费模式的生产者
ImmediateRocketProductor immediateRocketProductor = context.getBean(ImmediateRocketProductor.class);
immediateRocketProductor.setProducerGroup("-", "immediateRocketProductor");
immediateRocketProductor.start();
Message msg = new Message("TopicTest1", // topic
"Tag1", // tag
"OrderID001", // key
(i + " - Hello MetaQ zhangyan1").getBytes());// body
SendResult sendResult = immediateRocketProductor.send(msg); immediateRocketProductor.shutdown();
3.2 创建一对一消费模式的消费者
ImmediateRocketConsumer immediateRocketConsumer = context.getBean(ImmediateRocketConsumer.class);
immediateRocketConsumer.setConsumerGroup("-", "immediateRocketConsumer");
immediateRocketConsumer.subscribe("TopicTest1", "");
int consumeMessageBatchMaxSize =
immediateRocketConsumer.getRocketMQPushConsumer().getRocketMqClientConfig().getRocketConfig().getConsumeMessageBatchMaxSize();
immediateRocketConsumer.getRocketMQPushConsumer().newInstance().setConsumeMessageBatchMaxSize(consumeMessageBatchMaxSize);
MessageListenerConcurrently lister = new MessageListenerConcurrently() {
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
immediateRocketConsumer.getLogger().info(Thread.currentThread().getName() + " Receive New Messages: " + msgs.size());
MessageExt msg = msgs.get(0);
immediateRocketConsumer.getLogger().info( msg.getTopic() );
immediateRocketConsumer.getLogger().info(msg.getReconsumeTimes() );
try {
if (msg.getTopic().equals("TopicTest1")) {
// 执行TopicTest1的消费逻辑
if (msg.getTags() != null && msg.getTags().equals("Tag1")) {
// 执行Tag1的消费
immediateRocketConsumer.getLogger().info("TopicTest1:==Tag1===");
immediateRocketConsumer.getLogger().info(new String(msg.getBody()));
} else if (msg.getTags() != null & msg.getTags().equals("Tag2")) {
// 执行Tag1的消费
immediateRocketConsumer.getLogger().info("TopicTest1:==Tag2===");
immediateRocketConsumer.getLogger().info(new String(msg.getBody()));
} else if (msg.getTags() != null && msg.getTags().equals("Tag3")){
// 执行Tag1的消费
immediateRocketConsumer.getLogger().info("TopicTest1:==Tag3===");
immediateRocketConsumer.getLogger().info(new String(msg.getBody()));
} else {
}
} else if (msg.getTopic().equals("TopicTest2")) {
if (msg.getTags() != null && msg.getTags().equals("Tag2")) {
// 执行Tag2的消费
immediateRocketConsumer.getLogger().info("TopicTest2:=====");
immediateRocketConsumer.getLogger().info(new String(msg.getBody()));
}else{
}
} else if (msg.getTopic().equals("TopicTest3")) {
if (msg.getTags() != null && msg.getTags().equals("Tag3")) {
// 执行Tag2的消费
immediateRocketConsumer.getLogger().info("TopicTest3:=====");
immediateRocketConsumer.getLogger().info(new String(msg.getBody()));
}
} else {
}
} catch (Exception e) {
if (msg.getReconsumeTimes() == immediateRocketConsumer.getRocketMQPushConsumer().getMessageDelayLevel()) {
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}else{
return ConsumeConcurrentlyStatus.RECONSUME_LATER;
}
}
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
};
/**
* Consumer对象在使用之前必须要调用start初始化,初始化一次即可<br>
*/
immediateRocketConsumer.registerMessageListener(lister);
3.3 创建一对多消费模式的生产者(即组播模式,一端发送)
BroadcastProducer broadcast = context.getBean(BroadcastProducer.class);
// broadcast.setProducerGroup("192.168.2.31:9876","broadcast");
// broadcast.setProducerGroup("127.0.0.1:9876","broadcast"); ;
// broadcast.setProducerGroup("192.168.3.104:9876","broadcast");
broadcast.setProducerGroup("-","broadcast");
for (int i = 0; i <1; i++) {
SendResult sendResult = broadcast.send("broadcast", "broadcast", "TagA", "orderId01", "hello consumer broadcast "+ i);
}
broadcast.shutdown();
3.4 创建一对多消费模式的消费者(即组播模式,多端接收)
BroadcastConsumerA bcA = context.getBean(BroadcastConsumerA.class);
// 消息模型,支持以下两种:集群消费(clustering),广播消费(broadcasting)
bcA.setMessageModel(MessageModel.BROADCASTING);
// bcA.setConsumerGroup("192.168.2.31:9876","broadcast");
bcA.setConsumerGroup("-", "broadcast");
bcA.subscribe("broadcast", "Tag1 || Tag2 || Tag3 || TagA");
MessageListenerConcurrently lister = new MessageListenerConcurrently() {
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
MessageExt msg = msgs.get(0);
try {
bcA.getLogger().info(Thread.currentThread().getName() + " consumerA Receive New Messages: " + msgs + "%n");
String m = new String(msg.getBody());
bcA.getLogger().info(m);
} catch (Exception e) {
if (msg.getReconsumeTimes() == bcA.getRocketMQPushConsumer().getMessageDelayLevel()) {
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
} else {
return ConsumeConcurrentlyStatus.RECONSUME_LATER;
}
}
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
};
bcA.registerMessageListener(lister);