mqtt和activemq(MQTT和ActiveMQ有什么区别)

:暂无数据 2026-08-13 21:30:07 :2

mqtt和activemq(MQTT和ActiveMQ有什么区别)

大家好,mqtt和activemq相信很多的网友都不是很明白,包括MQTT和ActiveMQ有什么区别也是一样,不过没有关系,接下来就来为大家分享关于mqtt和activemq和MQTT和ActiveMQ有什么区别的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

本文目录

MQTT和ActiveMQ有什么区别

  MQTT只是IBM推出的一个消息协议,基于TCP/IP的。两个App端发送和接收消息需要中间人,这个中间人就是消息服务器(比如ActiveMQ/RabbitMQ),三者通信协议就是MQTT。
  wmqtt.jar是IBM实现的App端收发消息的具体实现,W意思为Webspare,说明消息服务器采用Webspare(WebSphere MQ Integrator Broker)。

Flutter通过Mqtt消费ActivieMQ

Flutter通过mqtt消费activemq,在android端主要使用插件的方式进行

处理流程

Android端连接MQTT

插件端业务处理

step1:配置插件依赖包

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    implementation ’com.google.code.gson:gson:2.8.5’

    implementation ’org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0’

    implementation ’org.eclipse.paho:org.eclipse.paho.android.service:1.1.1’

    implementation ’androidx.legacy:legacy-support-v4:1.0.0’

    implementation ’androidx.appcompat:appcompat:1.1.0-rc01’

    implementation ’androidx.constraintlayout:constraintlayout:1.1.3’

    implementation ’androidx.recyclerview:recyclerview:1.0.0’

    implementation ’androidx.multidex:multidex:2.0.1’

    implementation ’androidx.multidex:multidex-instrumentation:2.0.0’

    implementation ’com.google.android.material:material:1.1.0-alpha08’

step2 实现连接方法

class MqttClientPlugin : MethodCallHandler {

    override fun onMethodCall(call: MethodCall,    result: Result) {

        when (call.method) {

            "connectMq" -》 {

                    try {

                        connectToService()

                        result.success(true)

                    } catch (e: Exception) {

                        e.printStackTrace()

                        result.success(false)

                    }

                }

        }

    }

    private fun connectToService() {

        val intent = Intent(context, MqttClientService::class.java)

        this.context?.startService(intent)

    }

}

step3 实现mqttclient服务

class MqTTClientService : Service {

    private val TAG = "ActiveMQ"

    val clientId = "any_client_name"

    val serverURI = "tcp://192.168.0.201:1883" //replace with your ip

    val publishTopic = "outbox"

    val subscribeTopic = "TJ Test"

    var client: MqttAndroidClient? = null

    constructor() : super()

    val MY_ACTION = "MY_ACTION"

    var _currentV: Int = 0

    override fun onBind(intent: Intent?): IBinder? {

        return null

    }

    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {

        val myThread = MyThrad()

        myThread.start()

        return super.onStartCommand(intent, flags, startId)

    }

    private fun subscribe() {

        try {

            client?.subscribe(subscribeTopic, 0, IMqttMessageListener { topic, message -》

                Log.i("接收到监听的消息:", "${message.payload}")

            })

        } catch (e: MqttException) {

            e.printStackTrace()

        }

    }

    inner class MyThrad : Thread() {

        override fun run() {

            val connectOptions = MqttConnectOptions()

            connectOptions.isAutomaticReconnect = true

            client = MqttAndroidClient(this@MqTTClientService.applicationContext, serverURI, clientId)

            try {

                client?.connect(connectOptions, object : IMqttActionListener {

                    override fun onSuccess(asyncActionToken: IMqttToken) {

                        subscribe()

                    }

                    override fun onFailure(asyncActionToken: IMqttToken, e: Throwable) {

                        Log.i("连接错误:", "${e.message}")

                    }

                })

            } catch (e: MqttException) {

                e.printStackTrace()

            }

        }

        private fun subscribe() {

            try {

                client?.subscribe(subscribeTopic, 0) { topic, message -》

                    //通过广播发送监听到的消息

                    val intent = Intent()

                    intent.action = MY_ACTION

                    intent.putExtra("DATAPASSED", message.toString())

                    sendBroadcast(intent)

                }

            } catch (e: MqttException) {

                e.printStackTrace()

            }

        }

    }

}

step4监听广播

class DevicemanagerPlugin : MethodCallHandler {

    constructor(context: Context?, channel: MethodChannel) {

            this.context = context

            this.channel = channel

            initMqtt()

            register()

        }

    private fun register() {

            myReceiver = MyReceiver()

            val intentFilter = IntentFilter()

            intentFilter.addAction("MY_ACTION")

            this.context?.registerReceiver(myReceiver, intentFilter)

        }

    inner class MyReceiver : BroadcastReceiver() {

        override fun onReceive(context: Context?, intent: Intent?) {

            try {

                val value = intent?.getStringExtra("DATAPASSED")

                //将监听到的消息,通过methchannel传给flutter

                channel?.invokeMethod("receiveMsg", value)

            } catch (e: Exception) {

                e.printStackTrace()

            }

        }

    }   

}

Flutter端业务处理

实现receiveMsg方法

const channel = const MethodChannel("mqttclient");

class _MyHomePageState extends State《MyHomePage》 {

    @override

  void initState() {

      registerMethod()

      connectActiveMq()

  }

  void connectActiveMq() async{

    if (Platform.isAndroid) {

      var result = await Devicemanager.connectMq(API.MQ_URI);

      if (result) {

        print("mq链接成功");

      } else {

        print("mq链接失败");

      }

    }

  }

  void registerMethod() {

    channel.setMethodCallHandler((handler) {

      var completer = new Completer《String》();

      try {

        switch (handler.method) {

          case "receiveMsg":

            //接收到的消息

            var v = handler.arguments;

            break;

          default:

            break;

        }

      } catch (e) {

        print(e);

      }

      return completer.future;

    });

  }

}

MQTT和ActiveMQ有什么区别wmqtt.jar和mqttv3.jar又有什么区别

ActiveMQ 这个也没有研究过,最近打算弄个聊天所以也看了下MQTT,不过也是一头雾水,看到有些人是使用 Mosquitto:An Open Source MQTT v3.1 Broker 做的(broker)代理,好像这个更简单一点儿,
还有的是用:MQTT的学习研究(二)moquette-mqtt 的使用之mqtt broker的启动
如果你只是需要推送功能的话,可以使用第三方的推送试试,比如极光,百度等,有好多的
我的理解是:MQTT他只是定义了一种通讯协议,给我们封装好了一些socket连接,让我们方便调用,像 Mosquitto 和ActiveMQ只是基于这个协议实现的代理,而wmqtt.jar 是在移动端实现接收和发送消息的接口供我们调用!

各位,activemq可以限制客户端连接数吗

可以 生产者和消费者可以使用不同的传输协议来传输消息,ActiveMQ提供了广泛的连接模式,包括HTTP/S、JGroups、JXTA、muticast、SSL、TCP、UDP、XMPP等。
《transportConnectors》 《!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB --》 《transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/》 《transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/》 《transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/》 《transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/》 《transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/》 《/transportConnectors》
可以看出最大连接数是1000,最大容量是100m

OK,关于mqtt和activemq和MQTT和ActiveMQ有什么区别的内容到此结束了,希望对大家有所帮助。

mqtt和activemq(MQTT和ActiveMQ有什么区别)

本文编辑:admin

更多文章:


bios setup(“Bios setup”怎么在电脑里面设置)

bios setup(“Bios setup”怎么在电脑里面设置)

这篇文章给大家聊聊关于bios setup,以及“Bios setup”怎么在电脑里面设置对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年11月6日 10:00

三个表盘都代表什么(卡西欧手表里面三个小表盘是什么意思)

三个表盘都代表什么(卡西欧手表里面三个小表盘是什么意思)

各位老铁们,大家好,今天由我来为大家分享三个表盘都代表什么,以及卡西欧手表里面三个小表盘是什么意思的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年11月6日 08:10

国产免费的服务器系统(服务器用什么系统)

国产免费的服务器系统(服务器用什么系统)

大家好,关于国产免费的服务器系统很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于服务器用什么系统的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年11月6日 07:50

代码生成器app下载手机版(条码生成软件免费)

代码生成器app下载手机版(条码生成软件免费)

各位老铁们好,相信很多人对代码生成器app下载手机版都不是特别的了解,因此呢,今天就来为大家分享下关于代码生成器app下载手机版以及条码生成软件免费的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年11月6日 05:50

php递归删除目录(php怎么删除文件夹和文件夹下的所有文件)

php递归删除目录(php怎么删除文件夹和文件夹下的所有文件)

各位老铁们好,相信很多人对php递归删除目录都不是特别的了解,因此呢,今天就来为大家分享下关于php递归删除目录以及php怎么删除文件夹和文件夹下的所有文件的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年11月6日 03:30

vimoapp安卓手机版(制作VLog常用的APP有哪些呢)

vimoapp安卓手机版(制作VLog常用的APP有哪些呢)

大家好,vimoapp安卓手机版相信很多的网友都不是很明白,包括制作VLog常用的APP有哪些呢也是一样,不过没有关系,接下来就来为大家分享关于vimoapp安卓手机版和制作VLog常用的APP有哪些呢的一些知识点,大家可以关注收藏,免得下

2026年11月6日 01:50

拜登国防授权法案(少数国家对来自中国的旅客采取入境限制措施,中方:将采取对等措施)

拜登国防授权法案(少数国家对来自中国的旅客采取入境限制措施,中方:将采取对等措施)

“拜登国防授权法案”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看拜登国防授权法案(少数国家对来自中国的旅客采取入境限制措施,中方:将采取对等措施)!

2026年11月6日 00:40

sql数据库触发器怎么写(SQL 触发器编写)

sql数据库触发器怎么写(SQL 触发器编写)

今天给各位分享SQL 触发器编写的知识,其中也会对SQL 触发器编写进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年11月5日 22:50

手机网页游戏大全网站(WAP手机网页游戏网站)

手机网页游戏大全网站(WAP手机网页游戏网站)

大家好,手机网页游戏大全网站相信很多的网友都不是很明白,包括WAP手机网页游戏网站也是一样,不过没有关系,接下来就来为大家分享关于手机网页游戏大全网站和WAP手机网页游戏网站的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧

2026年11月5日 22:10

广域网osi参考模型(广域网技术详细资料大全)

广域网osi参考模型(广域网技术详细资料大全)

大家好,关于广域网osi参考模型很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于广域网技术详细资料大全的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年11月5日 20:20

最近更新

热门文章

新站如何通过网站维护提升SEO排名
2026-10-13 20:56:21 浏览:6
sql server2008下载地址(如何下载SQL Server 2008 R2 SP2免费版)
2026-10-05 05:30:29 浏览:6
标签列表