简单消息示例

使用RocketMQ去发送消息有三种方式:可靠同步,可靠异步和单次的传输方式。这篇文章展示了三种方式,检出注释和示例,以找出在特定用例中使用哪种方法。

可靠同步传输

使用RocketMQ去发送消息有三种方式:可靠同步,可靠异步和单次的传输方式。这篇文章展示了三种方式,检出注释和示例,以找出在特定用例中使用哪种方法。

public class SyncProducer {
    public static void main(String[] args) throws Exception {
        //实例化一个生产者组name
        DefaultMQProducer producer = new
            DefaultMQProducer("please_rename_unique_group_name");
        //运行这个实例
        producer.start();
        for (int i = 0; i < 100; i++) {
            //创建一个消息实例,指定topic,tag和消息体。
            Message msg = new Message("TopicTest" /* Topic */,
                "TagA" /* Tag */,
                ("Hello RocketMQ " +
                    i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */
            );
            //调用发送消息,投递消息到一个broker.
            SendResult sendResult = producer.send(msg);
            System.out.printf("%s%n", sendResult);
        }
        //当不再使用的时候关闭生产者
        producer.shutdown();
    }
}

可靠异步传输

应用:可靠异步传输,一般用在响应时间敏感的业务场景。

public class AsyncProducer {
    public static void main(String[] args) throws Exception {
        //实例化一个生产者组name
        DefaultMQProducer producer = new DefaultMQProducer("ExampleProducerGroup");
        //启动实例
        producer.start();
        producer.setRetryTimesWhenSendAsyncFailed(0);
        for (int i = 0; i < 100; i++) {
                final int index = i;
                // 创建一个消息实例,指定topic,tag和消息体。
                Message msg = new Message("TopicTest",
                    "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();
                    }
                });
        }
        //当不再使用的时候关闭生产者
        producer.shutdown();
    }
}

单向传输

应用:单向传输用于需要中等可靠性的情况,如日志收集。

public class OnewayProducer {
    public static void main(String[] args) throws Exception{
        //实例化一个生产者组名
        DefaultMQProducer producer = new DefaultMQProducer("ExampleProducerGroup");
        //运行这个实例
        producer.start();
        for (int i = 0; i < 100; i++) {
            //创建一个消息实例,指定topic,tag和消息体
            Message msg = new Message("TopicTest" /* Topic */,
                "TagA" /* Tag */,
                ("Hello RocketMQ " +
                    i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */
            );
            //调用发送去投递到一个代理
            producer.sendOneway(msg);

        }
        //不在使用的生产者关闭
        producer.shutdown();
    }
}

results matching ""

    No results matching ""