rocketmq简单消息发送

有以下3种方式发送RocketMQ消息

  • 可靠同步发送 reliable synchronous
  • 可靠异步发送 reliable asynchronous
  • 单向发送 one-way transmission

可靠同步发送

主要运用在比较重要一点消息传递/通知等业务

public class SyncProducer {
    public static void main(String[] args) throws Exception {
        DefaultMQProducer producer = new
            DefaultMQProducer("test");
        producer.start();
        for (int i = 0; i < 100; i++) {
            Message msg = new Message("TopicTest" /* Topic */,
                "TagA" /* Tag */,
                ("Hello RocketMQ " +
                    i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */
            );
            //Call send message to deliver message to one of brokers.

            SendResult sendResult = producer.send(msg);
            System.out.printf("%s%n", sendResult);
        }
        //Shut down once the producer instance is not longer in use.

        producer.shutdown();
    }
}

可靠异步发送

通常用于对发送消息响应时间要求更高/更快的场景

public class AsyncProducer {
    public static void main(
        String[] args) throws MQClientException, InterruptedException, UnsupportedEncodingException {
        DefaultMQProducer producer = new DefaultMQProducer("Jodie_Daily_test");
        producer.start();
        producer.setRetryTimesWhenSendAsyncFailed(0);

        for (int i = 0; i < 10000000; i++) {
            try {
                final int index = i;
                Message msg = new Message("Jodie_topic_1023",
                    "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();
                    }
                });
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        producer.shutdown();
    }
}

单向发送

适用于某些耗时非常短,但对可靠性要求并不高的场景,例如日志收集。

只发送消息,不等待服务器响应,只发送请求不等待应答。此方式发送消息的过程耗时非常短,一般在微秒级别。

public class OnewayProducer {
    public static void main(String[] args) throws Exception{
        DefaultMQProducer producer = new DefaultMQProducer("Test");
        producer.start();
        for (int i = 0; i < 100; i++) {
            //Create a message instance, specifying topic, tag and message body.

            Message msg = new Message("TopicTest" /* Topic */,
                "TagA" /* Tag */,
                ("Hello RocketMQ " +
                    i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */
            );
            //Call send message to deliver message to one of brokers.

            producer.sendOneway(msg);

        }
        //Shut down once the producer instance is not longer in use.

        producer.shutdown();
    }
}

rocketmq简单消息发送

Original: https://www.cnblogs.com/peachyy/p/9406536.html
Author: peachyy
Title: rocketmq简单消息发送

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/621448/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • [Java]Map接口有关面试题

    Map接口 1、HashMap和Hashtable的区别 线程安全方面。 HashMap是非线程安全的, Hashtable是线程安全的。因为 Hashtable内部方法基本都经过…

    Java 2023年6月5日
    0144
  • 重定向与请求转法的区别(简洁版)

    TOC # 二者的定义 ## 重定向redirect 浏览器向服务器发送一个请求,服务器会接收并处理返回新处理的URL给,浏览器客户端,浏览器客户端再次请求服务器获取,服务器再次响…

    Java 2023年6月5日
    068
  • Java核心技术-内部类(下)

    Day8 局部内部类 优势: 对外部完全隐蔽 可以访问外部类字段和局部变量 package cn.gyk; import javax.swing.*; import java.aw…

    Java 2023年6月5日
    079
  • crudapi增删改查接口零代码产品成功案例之金茶王投票系统

    crudapi增删改查接口零代码产品成功案例之金茶王投票系统 简介 2020年由于疫情原因,金茶王投票活动改成线上云投票,所以需要一套投票系统进行比赛。参赛选手包括两种类型,分别为…

    Java 2023年6月6日
    096
  • 00MQTT【目录】

    MQTT posted on2022-06-04 14:00 格物致知_Tony 阅读(11 ) 评论() 编辑 Original: https://www.cnblogs.com…

    Java 2023年5月29日
    074
  • JAVA入门基础_从零开始的培训_Git入门使用

    Git概述及下载安装 集中式版本控制与分布式版本控制概述 Git下载与安装 Git常用命令 Git所覆盖的区域 全局用户名和邮箱、仓库状态、初始化、添加删除暂存区、提交到本地库、查…

    Java 2023年6月9日
    0111
  • Cross Site Scripting DOM (XSS) 攻击jQuery append() 的处理方法

    做安全红线使用 工具进行扫描时, 风险。解决该问题有两种办法。 一、原生dom方式 使用JavaScript原生dom替换append方法,原生dom会忽略 Original: h…

    Java 2023年6月13日
    065
  • ViewGroup 和 View 事件传递及处理小谈

    在自定义组件的时候少不了会去处理一些事件相关的东西,关于事件这块网上有很多文章,有说的对的也有说的不对的,我在理解的时候也有过一段时间的迷惑,现在把自己理解的东西写下来,给有相同疑…

    Java 2023年6月7日
    057
  • 故事篇:终于给老婆讲明白什么是logback了!

    故事会迟到,但他从不会缺席。今天的故事开始了,你准备好了吗? 前奏 简单介绍一下我的老婆:集智慧与美貌于一身的女子——阿狸,一句”我们心有灵犀,不是吗?”让…

    Java 2023年6月5日
    094
  • (转发)远程桌面连接无显示器的 Linux(Ubuntu/Debian等):使用 Xfce

    手头上有台电脑,安装了 Ubuntu,安装了 postgres 数据库,用于开发机,未连接显示器。在 Windows 开发机上,无法通过 VNC, Anydesk 连接远程桌面到 …

    Java 2023年6月9日
    074
  • 标识符命名、instanceof 、自动装箱与拆箱、java关键字

    标识符的命名规则 标识符的含义: 是指在程序中,我们自己定义的内容,譬如, 类的名字, 方法名称以及 变量名称等等,都是标识符。 命名规则:(硬性要求) 标识符可以包含英文字母,0…

    Java 2023年6月13日
    075
  • Dubbo面试大纲

    本篇文章不是进行详细的Dubbo实现以及原理分析的文章,适用于用过Dubbo,对Dubbo有一定了解准备面试的小伙伴阅读。下面列的一些点,如果能在面试时候说到,那面试官肯定觉得不错…

    Java 2023年6月7日
    082
  • 无重复字符的最长子串

    https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ 上链接为Leeco…

    Java 2023年6月5日
    064
  • redis实现分布式锁导致的问题

    解决缓存击穿的问题(加锁) 1.虽然spring组件都是单例的,但是到了多个机器部署服务的情况下这种单机锁就不可行了 使用分布式锁 1.有可能占用锁的那个线程因为宕机没有删除锁,导…

    Java 2023年6月8日
    061
  • Day3

    package base;public class Demo02 { public static void main(String[] args){ String a="…

    Java 2023年6月5日
    067
  • Java @Repeatable(转)

    add by zhj: 使用@Repeatable的注解,只有在定义时需要指定@Repeatable的参数,注解容器,即下面的Skills。在使用注解时,并不会用到注解容器。 所以…

    Java 2023年5月29日
    077
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球