package com.softmax.mq.courier.rocket.example; import org.apache.rocketmq.client.producer.DefaultMQProducer; import org.apache.rocketmq.client.producer.SendCallback; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.common.message.Message; import org.apache.rocketmq.remoting.common.RemotingHelper; /** * 异步消息: 异步传输一般用于响应时间敏感的业务场景 * * @author Jarvis * @date 2018/9/6 */ public class AsyncProducer { public static void main(String[] args) throws Exception { //Instantiate with a producer group name. DefaultMQProducer producer = new DefaultMQProducer("ASYNC_MQ_GROUP"); // Specify name server addresses. producer.setNamesrvAddr(SyncProducer.NAMESRVADDR); producer.setInstanceName("ASYNC_PRODUCER"); producer.setVipChannelEnabled(false); // 设置重试次数,默认2 producer.setRetryTimesWhenSendFailed(3); //设置发送超时时间,默认是3000 producer.setSendMsgTimeout(10000); //Launch the instance. producer.start(); producer.setRetryTimesWhenSendAsyncFailed(0); for (int i = 0; i < 10; i++) { final int index = i; Message msg = new Message("Async_Topic_Test", "Async_TagA", "OrderID188", "Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET)); producer.send(msg, new SendCallback() { @Override public void onSuccess(SendResult sendResult) { System.out.printf("%-10d OK %s %n", index, sendResult.getMsgId()); } @Override public void onException(Throwable e) { System.out.printf("%-10d Exception %s %n", index, e); e.printStackTrace(); } }, 10000); } //Shut down once the producer instance is not longer in use. producer.shutdown(); } }