RocketMQ 生产消费Demo(原生API)
mvn依赖
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.7.1</version>
</dependency>
生产消息
普通消息-同步发送
public static void main (String[] args) throws MQClientException, MQBrokerException, RemotingException, InterruptedException {
DefaultMQProducer producer = new DefaultMQProducer("producer-1");
producer.setNamesrvAddr("localhost:9876");
producer.start();
for (int i = 0; i < 10; i++) {
Message message = new Message();
message.setTopic("rocketmq-test1");
message.setKeys("1");
message.setBody(("test rocketMQ send message : " + i).getBytes(StandardCharsets.UTF_8));
final SendResult send = producer.send(message);
System.out.println("发送结果:" + send);
}
producer.shutdown();
}
普通消息-异步发送
public static void main (String[] args) throws MQClientException, RemotingException, InterruptedException {
DefaultMQProducer producer = new DefaultMQProducer("producer-1");
producer.setNamesrvAddr("localhost:9876");
producer.start();
producer.setRetryTimesWhenSendAsyncFailed(0);
for (int i = 0; i < 10; i++) {
Message message = new Message();
message.setTopic("rocketmq-async");
message.setBody(("test rocketMQ async send message : " + i).getBytes(StandardCharsets.UTF_8));
producer.send(message, new SendCallback() {
@Override
public void onSuccess (SendResult sendResult) {
System.out.println("异步发送成功: " + sendResult);
}
@Override
public void onException (Throwable throwable) {
System.out.println("异步发送失败: " + throwable.getStackTrace());
}
});
}
Thread.sleep(5_000);
producer.shutdown();
}
普通消息-单向模式
public static void main (String[] args) throws MQClientException, RemotingException, InterruptedException {
DefaultMQProducer producer = new DefaultMQProducer("producer-1");
producer.setNamesrvAddr("localhost:9876");
producer.start();
for (int i = 0; i < 10; i++) {
Message message = new Message();
message.setTopic("rocketmq-oneway");
message.setBody(("test rocketMQ send oneway message : " + i).getBytes(StandardCharsets.UTF_8));
producer.sendOneway(message);
}
producer.shutdown();
}
消费消息
Push模式
public static void main (String[] args) throws MQClientException {
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumer-1");
consumer.setNamesrvAddr("localhost:9876");
consumer.subscribe("rocketmq-test1", "*");
consumer.registerMessageListener(new MessageListenerConcurrently() {
@Override
public ConsumeConcurrentlyStatus consumeMessage (List<MessageExt> list, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
System.out.println("消费到的消息:" + list);
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
});
consumer.start();
}
Pull模式
public static void main (String[] args) throws MQClientException, MQBrokerException, RemotingException, InterruptedException {
DefaultMQPullConsumer consumer = new DefaultMQPullConsumer("consumer-2");
consumer.setNamesrvAddr("localhost:9876");
consumer.start();
final Set<MessageQueue> messageQueues = consumer.fetchSubscribeMessageQueues("rocketmq-test1");
for (MessageQueue messageQueue : messageQueues) {
System.out.println("messageQueue: " + messageQueue);
final PullResult result = consumer.pull(messageQueue, "*", 0, 10);
final List<MessageExt> msgFoundList = result.getMsgFoundList();
if(msgFoundList ==null || msgFoundList.isEmpty()){
continue;
}
for (MessageExt messageExt : msgFoundList) {
System.out.println(messageExt);
}
}
consumer.shutdown();
}