精华内容
下载资源
问答
  • Broker简介

    万次阅读 2018-06-13 15:40:22
    Broker是ActiveMQ的一个实例。...而Broker是ActiveMQ的一个简易实现,我们只需要在代码中启动Broker(用跑代码的方式启动ActiveMQ),从而实现嵌入式的ACtiveMQ。使用过程如下:(1) 运行Broker启动程序(2) 运行 se...

    Broker是ActiveMQ的一个实例。

    我们可以将ActiveMQ看成一个服务,是需要我们下载解压后才能使用(免安装)。

    主要使用目的是为了将服务器和客户端解耦,用来做消息的传递。

    而Broker是ActiveMQ的一个简易实现,我们只需要在代码中启动Broker(用跑代码的方式启动ActiveMQ),从而实现嵌入式的ACtiveMQ。使用过程如下:

    (1) 运行Broker启动程序

    (2) 运行 sender(发送者) 代码,发送mq

    (3) 运行consume(消费者) 代码,接收mq

    其中broker的启动方式有两种:

    1. Broker Service启动 Broker, 例子如下:

      BrokerService broker = new BrokerService();

      broker.setUseJma(true);

      broker.addConnector("tcp://localhost:61616");

    broker.start();

    2. BrokerFactory方式启动 Broker,例子如下:

    String uri = "properties:broker.properties";

    BrokerService broker = BrokerFactory.createBroker(new URI(uri));

    broker.addConnector("tcp://localhost:61616");

    broker.start();

    其中,broker.properties 的内容如下所示:

    useJmx=true

    persistent=false

    brokerName=Cheese

    说白了,Broker其实就是实现了用代码的形式启动ActiveMq,将mq嵌入到java代码中,随时用随时启动,在用的时候再去启动。节省了资源,也保证了可靠性。

    展开全文
  • 我觉得这句话用在程序员的工作中就是:在网络中找一万篇资料,在实践中一万种尝试。 2014-09-17:  在本文中,由于作者事先不了解,设计不合理,使每个设备采用prefix+CLIENT_ID的方

    转自

    http://0x1.im/blog/mobile/android-push-mqtt-mosquitto.html


    “读万卷书,行万里路”。我觉得这句话用在程序员的工作中就是:在网络中找一万篇资料,在实践中做一万种尝试。


    2014-09-17: 
    在本文中,由于作者事先不了解,设计不合理,使每个设备采用prefix+CLIENT_ID的方式作为topic,导致需要给每个设备的topic单独推送,才产生了一些问题,特别是推送的时间上的问题,是PHP循环往每个topic写入消息的时间。希望读者不要被我误导。 
    给每个设备一个topic,实际上只在做点对点的推送的时候需要,如果没有这个需求,比如全局的推送,或者是几个大类的推送,完全可以设计一个更合理的topic规则,把主要的精力放在client和broker的维护上。

    由于Android的开放性,Android的推送解决方案有很多。这其中最便于使用的,应该是google提供的GCM的方案,但是GCM是基于GMS服务的。由于国内的ROM大多干掉了GMS,或者是由于某些众所周知的原因,我们无法使用这个方案获得稳定的推送服务(这个Apple的APNS不同,APNS是IOS的设备上唯一可用的推送解决方案,也是稳定的方案)。基于这些原因,我们选择了自建推送服务的方式。

    1. 基础建设:

    纸上得来终觉浅 绝知此事要躬行

    1. 理论支撑 :使用MQTT作为Android实现方案的原因源于一篇四年前的文章:How to Implement Push Notifications for Android
    2. 与Web管理的对接 : 文章的作者同时也提供了PHP端的Client方案:PhpMQTTClient
    3. 服务端 : 当然,这只是Web端的实现方案,至于后端需要使用的Broker,我们找到了mosquitto
    4. 客户端 : 在客户端中,我们使用的是来自IBM的wmqtt.jar的包:wmqtt

    以上四个基本条件是我们具备了部署基于MQTT协议的Android的推送服务的基本条件。在最初的测试中,也没有遇到过太大的问题,测试顺利,于是我们在我们的应用和服务器之间部署了这套解决方案。

    2. 从0到1的变化:

    千里之行,始于足下

    由于事先并没有做推送的经验,在实际实施的过程中我们明白的几个基础的概念:

    1. MQTT协议是一个即时通讯协议,推送实际上用到的只是它可以publish内容给topic的功能。topic是一个广播,所有订阅了这个topic的客户端都可以收到消息,为了实现针对设备的点对点推送,我们使用一个prefix+Client ID的方式给每个设备一个topic(如果没有这个需求,可以采取其它灵活的方式)。
    2. 为了保证客户端能够实时的收到推送消息,即使是程序退出,客户端用于接收消息的service也需要处于保持状态。
    3. 客户端与Broker、Broker和Web端的都是socket通信,推送的过程是用于Web端的client发布一个消息到Broker,Broker再将消息发送给当前其它连接到Broker的Client。所以能及时收到消息的只是现在和Broker保持连接状态的设备。
    4. 服务端需要维护一个设备id列表,这个列表中的id必须都是唯一的(在前期,我们选择使用Android ID,这也带来了很多麻烦)。

    基于以上几点,我们也可以发现以下的问题:

    1. 不是所有的设备都能够及时的获取到推送的内容。
    2. 客户端的service随时会有被各种安全软件干掉的风险。

    通过前期的调研我们也发现,这些问题也是其它的第三方推送服务也都会遇到的问题。只要迈出第一步,让服务先work起来,其它的问题后续来优化。

    3. 从1到1万:

    不积硅步,无以致千里

    这个阶段主要是丰富推送的功能,解决一些前表面上的问题,我们做了以下的调整:

    1. 在设备量到10000的时候,遇到了一个问题:推送10000个设备时间过长。这个问题很快得到了解决:这是由于没发送一个设备,都新建了一个从Web端到Broker的socket连接,这实际上是没有必要的,只要socket不断开所有Publish的工作都可以通过一个socket进行(这和APNS有些不一样的地方,在苹果的推送服务中,如果有一个设备id是无效的,整个推送都会断开),在前文提到过的Web端的库中,是有指定重连的操作的。

    2. 丰富推送的内容。虽然推送的内容都是文本,但是文本的解析却是客户端维持的service来进行的,所以通过推送json的方式,实现了分别推送新闻、天气等富文本信息,并可以通过点击跳转到不同的页面。

    3. 分地区推送的需求,这个实现方式经过一些迭代,最早是通过用户注册地来实现的,后来改为了用户安装应用时上报的地区的方式。

    4. 从1万到10万,必须做出的改变:

    行百里者半于九十

    数据量到达10万的时候,一些问题也逐渐凸显。

    1. Android ID重复的问题 : 从网上查询来的资料,大部分都是使用Android的系统参数ANDROID_ID来做推送的。然而实践表明,这个参数并不是可靠的。生产环境中使用这个参数有极大的几率重复。由于一个相同的设备id连接到Broker的时候,之前的连接就会断开,这就会导致相同设备ID的设备只有一个会收到推送的消息。 在续的改造过程中,我们将设备ID换成了自己生成的一套唯一随机的ID。

    2. 错误的id字符 : 在查看MQTT的文档中,我们只注意到了设备ID需要在1~23位之间,却并没有注意到字符的限制。最初生成的id是base64的编码。在后面的测试中 ,总是发现推送到某些设备之后推送就断开了。经过检查发现,这是由于一些设备id中存在+符号导致的。 在Topic中,+#会被当作通配符处理,导致出现 Socket error 的错误。 经过咨询,得到了以下的答案:

      Roger Light (roger.light) said : Are you saying that clients that have a client id with '+' in are rejected? This shouldn't happen. If you mean that clients are publishing to a topic with '+' in, then you are correct that this is not allowed.

    3. 从Broker中获取有用的信息 : 生产环境中需要通过从Broker中获取一些有用的信息用于监控推送的状态。在Mosquitto的配置中,可以把log_type设定为all来记录全部的log。 通过订阅Mosquitto的一个特定的Topic,可以获取到一些推送的统计信息: mosquitto_sub -h 192.168.0.1 -p 1883 -t $SYS/broker/# -v

    4. 对于不在线的设备的处理(消息持久化) : IOS和Windows Phone的设备的推送服务由于是系统提供的服务,只要设备网络在线,都是可以及时收到消息的,对于Android的自建推送服务来说,显然无法保证这一点。然而通过消息持久化的配置,也可以实现以下策略:

      • 应用处于打开状态,设备在线的时候,可以及时的收到消息
      • 应用退出、推送的Service在线的时候,可以收到推送消息
      • 应用和Service都被关闭,下次应用启动的时候,可以收到一天内的推送消息

      基于以上的策略,可以在客户端和Broker之间配置消息持久化和订阅的持久化。配置过程中需要在以下几个地方注意: 1. Web端发送消息的时候,QoS设定为1 2. Mosquitto的配置文件中,设定persistencetrue 3. 客户端MQTT_CLEAN_START(Clean session)为false,即不在服务启动时清理session,MQTT_QUALITIES_OF_SERVICE(QoS)与Web端保持一致;

    5. 安全策略的控制 : 在Mosquitto的后端配置中,可以使用限定客户端前缀,使用ACL权限控制,配置SSL连接的方式进行安全控制。

    5. 从10万到more,更多要做的事情...

    路遥知马力

    1. 推送时间的优化调整 : 实际环境中,一台4G内存,4核CPU的服务器,发送20万台设备的消息大概需要4分钟左右,推送服务器并没有什么压力,这个时间取决于Web端将所有的消息Publish到Broker服务器的时间。可以通过多线程的方式进行优化。

    2. 及时清理失效的设备id : 由于技术上的改造和迭代,一些设备ID在更新之后就不会再使用,服务端设定一定的策略来清理无效的设备ID可以减轻推送的压力。比如通过记录设备最后一次连接到Broker的时间,如果这个时间超出某个限制(一个月),就清理掉这个设备id。下次设备重新连入的时候还会再发送设备ID,这样即不会给服务器造成压力,也不会漏掉某些设备的推送。

    3. 集群部署 : Mosquitto支持集群部署的配置(Bridges),其原理也是将一个消息Puhlish到集群中的其它服务器,然后由其它服务器来发送。

      A bridge is a way of connecting multiple MQTT brokers together.

    4. 如何让客户端的service始终在线 : 参考:

      在android中,service被杀死后在没有被系统/安全软件禁止的条件下是能够自启动的,具体可自行网上搜索“android service onstartcommand START_STICKY”

    6. Mosquitto的配置优化

    我们的部分配置:

    allow_zero_length_clientid false
    persistent_client_expiration 1d
    max_connections -1
    persistence true
    log_type all
    connection_messages false
    allow_anonymous false
    

    7. 资源/资料收集

    1. Apache的open source messaging and Integration Patterns server,ActiceMQ,使用java编写,使用与管理很方便,目前发现的问题是内存使用量较大:Apache ActiveMQ
    2. Eclipse的客户端库:Eclipse Paho
    3. MQTT v3.1协议规范:MQTT V3.1 Protocol Specification
    4. Mosquitto文档:Mosquitto Documentation

    展开全文
  • ActiveMQ —— Broker

    千次阅读 2020-05-23 11:32:25
    文章目录Broker什么?不同的 conf 配置文件模拟不同的实例嵌入式 Brokerpom.xmlEmbedBroker队列验证 Broker什么? 相当于一个 ActiveMQ 服务器实例 说白了,Broker 其实就是实现了用代码的形式启动 ActiveMQ ...

    前文

    消息中间件 —— 简介

    ActiveMQ 下载、安装

    ActiveMQ —— Java 连接 ActiveMQ(点对点)

    ActiveMQ —— Java 连接 ActiveMQ(发布订阅 Topic)

    Broker 是什么?

    相当于一个 ActiveMQ 服务器实例

    说白了,Broker 其实就是实现了用代码的形式启动 ActiveMQ 将 MQ 嵌入到 Java 代码中,以便随时用随时启动,在用的时候再去启动这样能节省了资源,也保证了可靠性

    不同的 conf 配置文件模拟不同的实例

    在 conf 里面拷贝一个 activemp.xml 一样的文件命名为 activemp02.xml
    在这里插入图片描述
    那么我们启动新的 activeMQ 就不是直接 start 了,而是需要指定 start,使用命令前,需要进入到 bin 目录下

    windows 版本启动命令

    activemq start xbean:file:/D:/apache-activemq-5.15.12/conf/activemq02.xml
    

    Linux 版本启动命令

    ./activemq start xbean:file:/D:/apache-activemq-5.15.12/conf/activemq02.xml
    

    嵌入式 Broker

    用 ActiveMQ Broker 作为独立的消息服务器来构建 Java 应用,ActiveMQ 也支持在 vm 中通信基于嵌入式的 Broker,能够无缝的集成其它应用

    pom.xml

    <dependency>
    	<groupId>com.fasterxml.jackson.core</groupId>
    	<artifactId>jackson-databind</artifactId>
    	<version>2.9.5</version>
    </dependency>
    
    <!-- activemq 所需要的 jar 包配置 -->
    <dependency>
    	<groupId>org.apache.activemq</groupId>
    	<artifactId>activemq-all</artifactId>
    	<version>5.15.9</version>
    </dependency>
    
    <dependency>
    	<groupId>org.apache.xbean</groupId>
    	<artifactId>xbean-spring</artifactId>
    	<version>3.16</version>
    </dependency>
    

    EmbedBroker

    package com.java.elasticsearch.activemq;
    
    import org.apache.activemq.broker.BrokerService;
    
    /**
     * @author Woo_home
     * @create 2020/5/22 13:27
     */
    
    public class EmbedBroker {
        public static void main(String[] args) throws Exception {
            // ActiveMQ 也支持在 vm 中通信基于嵌入式的 Broker
            BrokerService brokerService = new BrokerService();
            brokerService.setUseJmx(true);
            brokerService.addConnector("tcp://localhost:61616");
            brokerService.start();
        }
    }
    

    运行该程序之后迷你版的 ActiveMQ 就启动了,这里的 localhost 是因为修改了 hosts 文件的,这个没关系
    在这里插入图片描述
    输入 jps -l 查看进程
    在这里插入图片描述

    队列验证

    编写生产者和消费者验证下:

    生产者代码如下:

    package com.java.elasticsearch.activemq;
    
    import org.apache.activemq.ActiveMQConnectionFactory;
    import javax.jms.*;
    
    /**
     * @author Woo_home
     * @create by 2020/5/2  21:32
     */
    public class JmsProduce {
    
        // 定义 MQ 连接地址
        private static final String ACTIVE_MQ_URL = "tcp://localhost:61616";
    
        // 定义队列名称
        private static final String QUEUE_NAME = "queue01";
    
        public static void main(String[] args) throws JMSException {
            // 1、创建连接工厂
            ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory();
            // 2、通过连接工厂,获得连接 Connection
            Connection connection = activeMQConnectionFactory.createConnection();
            connection.start();
    
            ///3、创建会话
            // 两个参数,第一个叫事务 / 第二个叫签收
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    
            // 4、创建目的地(具体是队列还是主题 Topic)
            Queue queue = session.createQueue(QUEUE_NAME);
    
            // 5、创建消息的生产者
            MessageProducer messageProducer = session.createProducer(queue);
    
            // 6、通过使用 MessageProducer 生产 3 条消息发送到 MQ 的队列里面
            for (int i = 0; i < 3; i++) {
                // 创建消息
                TextMessage textMessage = session.createTextMessage("msg---" + i);// 理解为一个字符串
                // 7、通过 MessageProducer 发送给 MQ
                messageProducer.send(textMessage);
            }
            // 8、关闭资源
            messageProducer.close();
            session.close();
            connection.close();
    
            System.out.println("****** 消息发布到 MQ 完成 ******");
        }
    }
    

    消费者代码如下:

    package com.java.elasticsearch.activemq;
    
    import org.apache.activemq.ActiveMQConnectionFactory;
    import javax.jms.*;
    import java.io.IOException;
    
    /**
     * @author Woo_home
     * @create by 2020/5/3  0:51
     */
    public class JmsConsumer {
    
        // 定义 MQ 连接地址
        private static final String ACTIVE_MQ_URL = "tcp://localhost:61616";
    
        // 定义队列名称
        private static final String QUEUE_NAME = "queue01";
    
        public static void main(String[] args) throws JMSException, IOException {
            // 1、创建连接工厂
            ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory();
            // 2、通过连接工厂,获得连接 Connection
            Connection connection = activeMQConnectionFactory.createConnection();
            connection.start();
    
            ///3、创建会话
            // 两个参数,第一个叫事务 / 第二个叫签收
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    
            // 4、创建目的地(具体是队列还是主题 Topic)
            Queue queue = session.createQueue(QUEUE_NAME);
    
            // 5、创建消费者
            MessageConsumer messageConsumer = session.createConsumer(queue);
    
            // 通过监听的方式来消费消息 MessageConsumer messageConsumer = session.createConsumer(queue)
            messageConsumer.setMessageListener(new MessageListener() {
                @Override
                public void onMessage(Message message) {
                    if (null != message && message instanceof TextMessage) {
                        TextMessage textMessage = (TextMessage) message;
                        try {
                            System.out.println("****** 消费者接收到消息 Broker ****** :" + textMessage.getText());
                        } catch (JMSException e) {
                            e.printStackTrace();
                        }
                    }
                }
            });
            System.in.read();
            // 关闭资源
            messageConsumer.close();
            session.close();
            connection.close();
        }
    }
    

    启动消息生产者
    在这里插入图片描述
    启动消息消费者,可以接收到消息(迷你版的 ActiveMQ)
    在这里插入图片描述

    展开全文
  • brokerIP2 存在broker主从时,在broker主节点上配置了brokerIP2的话,broker从节点会连接主节点配置的brokerIP2来同步。 默认不配置brokerIP1和brokerIP2时,都会根据当前网卡选择一个IP使用,当你的...

    RocketMQ中broker配置brokcerIP1和brokerIP2的作用


    brokerIP1 当前broker监听的IP
    brokerIP2 存在broker主从时,在broker主节点上配置了brokerIP2的话,broker从节点会连接主节点配置的brokerIP2来同步。

    默认不配置brokerIP1和brokerIP2时,都会根据当前网卡选择一个IP使用,当你的机器有多块网卡时,很有可能会有问题。比如,我遇到的问题是我机器上有两个IP,一个公网IP,一个私网IP,结果默认选择的走公网IP,这是不正确的,我期望的是所有业务内部通信都走内网。

    举个例子,在下面部署架构的情况下的各broker节点配置文件:

    两个namesrv,两主两从,异步
    10.10.10.1 namesrv1
    10.10.10.2 namesrv2
    10.10.10.3 broker-a
    10.10.10.4 broker-b
    10.10.10.5 broker-a-s
    10.10.10.6 broker-b-s

    broker-a的配置

    brokerClusterName=DefaultCluster
    brokerIP1=10.10.10.3
    brokerIP2=10.10.10.3
    brokerName=broker-a
    brokerId=0
    deleteWhen=04
    fileReservedTime=48
    brokerRole=ASYNC_MASTER
    flushDiskType=ASYNC_FLUSH
    #nameServer地址,分号分割
    namesrvAddr=10.10.10.1:9876;10.10.10.2:9876
    #存储路径
    storePathRootDir=/home/rocketmq/rocketmq/data
    #commitLog 存储路径
    storePathCommitLog=/home/rocketmq/rocketmq/data/commitlog
    #消费队列存储路径存储路径
    storePathConsumeQueue=/home/rocketmq/rocketmq/data/consumequeue
    #消息索引存储路径
    storePathIndex=/home/rocketmq/rocketmq/data/index
    #checkpoint 文件存储路径
    storeCheckpoint=/home/rocketmq/rocketmq/data/checkpoint
    #abort 文件存储路径
    abortFile=/home/rocketmq/rocketmq/data/abort
    

    broker-b的配置

    brokerClusterName=DefaultCluster
    brokerIP1=10.10.10.4
    brokerIP2=10.10.10.4
    brokerName=broker-b
    brokerId=0
    deleteWhen=04
    fileReservedTime=48
    brokerRole=ASYNC_MASTER
    flushDiskType=ASYNC_FLUSH
    #nameServer地址,分号分割
    namesrvAddr=10.10.10.1:9876;10.10.10.2:9876
    #存储路径
    storePathRootDir=/home/rocketmq/rocketmq/data
    #commitLog 存储路径
    storePathCommitLog=/home/rocketmq/rocketmq/data/commitlog
    #消费队列存储路径存储路径
    storePathConsumeQueue=/home/rocketmq/rocketmq/data/consumequeue
    #消息索引存储路径
    storePathIndex=/home/rocketmq/rocketmq/data/index
    #checkpoint 文件存储路径
    storeCheckpoint=/home/rocketmq/rocketmq/data/checkpoint
    #abort 文件存储路径
    abortFile=/home/rocketmq/rocketmq/data/abort
    

    broker-a-s的配置

    brokerClusterName=DefaultCluster
    brokerIP1=10.10.10.5
    brokerName=broker-a
    brokerId=1
    deleteWhen=04
    fileReservedTime=48
    brokerRole=SLAVE
    flushDiskType=ASYNC_FLUSH
    #nameServer地址,分号分割
    namesrvAddr=10.10.10.1:9876;10.10.10.2:9876
    #存储路径
    storePathRootDir=/home/rocketmq/rocketmq/data
    #commitLog 存储路径
    storePathCommitLog=/home/rocketmq/rocketmq/data/commitlog
    #消费队列存储路径存储路径
    storePathConsumeQueue=/home/rocketmq/rocketmq/data/consumequeue
    #消息索引存储路径
    storePathIndex=/home/rocketmq/rocketmq/data/index
    #checkpoint 文件存储路径
    storeCheckpoint=/home/rocketmq/rocketmq/data/checkpoint
    #abort 文件存储路径
    abortFile=/home/rocketmq/rocketmq/data/abort
    

    broker-b-s的配置

    brokerClusterName=DefaultCluster
    brokerIP1=10.10.10.6
    brokerName=broker-b
    brokerId=1
    deleteWhen=04
    fileReservedTime=48
    brokerRole=SLAVE
    flushDiskType=ASYNC_FLUSH
    #nameServer地址,分号分割
    namesrvAddr=10.10.10.1:9876;10.10.10.2:9876
    #存储路径
    storePathRootDir=/home/rocketmq/rocketmq/data
    #commitLog 存储路径
    storePathCommitLog=/home/rocketmq/rocketmq/data/commitlog
    #消费队列存储路径存储路径
    storePathConsumeQueue=/home/rocketmq/rocketmq/data/consumequeue
    #消息索引存储路径
    storePathIndex=/home/rocketmq/rocketmq/data/index
    #checkpoint 文件存储路径
    storeCheckpoint=/home/rocketmq/rocketmq/data/checkpoint
    #abort 文件存储路径
    abortFile=/home/rocketmq/rocketmq/data/abort
    
    展开全文
  • 前几天遇到一个bug,查看发送日志发现java.io.IOException: Broken pipe的错误,通过深入了解发现当kafka ...本博文记录一下当Kafka发送超过broker限定大小的消息时Client和Broker端各自会有什么异常。 Kafka...
  • 3.kafka中的broker 是干什么broker 是消息的代理,Producers往Brokers里面的指定Topic中写消息,Consumers从Brokers里面拉取指定Topic的消息,然后进行业务处理,broker在中间起到一个代理保存消息的中转站。 4...
  • RocketMQ broker配置参数

    2020-09-16 10:20:29
    RocketMQ broker配置参数 之前介绍了rocketmq docker版部署的方法和启动命令,这里介绍一下rocketmq broker的配置参数。...以broker-a.properties为例,broker-a-s需要修改ip和brokerId=1,brokerName=broker-
  • ObjectBroker

    2008-05-26 12:55:00
    ObjectBroker是.NET平台下的一款开源O/R映射框架。它支持对象缓存,1:1, 1:n 和 m:n的关联映射等特性。 http://objectbroker.sourceforge.net/
  • kafka broker迁移

    千次阅读 2016-12-28 15:47:40
    原来有一个5台的kafka集群,现在需要用一台新的服务器替换原先的一台broker,所以需要将这个broker上所有partition的数据都迁移过去。 我的kafka是0.8.2.1的版本,其本身提供了一个kafka-reassign-partitions.sh工具...
  • 最近在mqtt推送,水平不够,看的资料也不全,现在是能推送消息,但是集群啊,还有一些优化啊都不太懂。小弟只有50左右c币了,都给你们了。。。
  • Agent和Broker的差别是什么

    万次阅读 2017-04-17 11:00:21
    agent你应该在计算机科学里见过,比如智能agent,多agent环境等等。两个都有“代替委托方操作...broker更多地体现被动分,更倾向于“经纪人”,决策主要有委托方来完成,在搞权限委托下也可以很多决策。简单地说,br
  • 6.broker

    2016-09-19 14:23:40
    broker主要有以下几大功能 接受客户端发送到消息,并存储接受客户端的消费请求,返回消息数据consumergroup消费进度存储、查询topic配置管理一些其他的配置管理、查询:topic创建、删除、修改,broker配置查询、...
  • ActiveMQ——Broker

    2019-07-18 22:12:33
    一、Broker简介  ActiveMQ的Broker其实就代表着ActiveMQ的服务,我们在启动ActiveMQ的时候会读取ActiveMQ的配置文件activemq.xml,默认的配置如下: <beans xmlns=...
  • Message Broker 教程大纲

    千次阅读 2014-06-12 20:43:10
    2013年一整年在公司一直MessageBroker相关。也一直想写点关于MessageBroker的jia
  • Msgbroker 概述

    千次阅读 2015-03-13 11:13:47
    Msgbroker 概述 Msgbroker,也称为Message Broker(消息代理组件),是企业级应用系统中常用的消息中间件,主要应用于系统或组件之间消息的可靠、异步通讯。 应用消息中间件可以降低系统间耦合度,提高系统的...
  • Broker的理解:就是一个activeMq服务。 嵌入式Broker启动: Broker Service启动: Broker Factory启动: 利用Spring集成Broker:  
  • RocketMQ 简介 -- Broker

    千次阅读 2018-04-12 18:10:44
    RocketMQ Broker RocketMQ Broker 概述 处理Producer消息 处理Consumer消息 内部服务 概述 Broker即是物理上的概念,也是逻辑上的概念。多个物理Broker通过IP:PORT区分,多个逻辑Broker通过BrokerName...
  • broker什么时候离开ISR? ISR是一组与leaders完全同步的消息副本,也就是说ISR中包含了所有提交的消息。ISR应该总是包含所有的副本,直到出现真正的故障。如果一个副本从leader中脱离出来,将会从ISR中删除。 ...
  • Mqtt Broker部署方法

    千次阅读 2017-11-17 19:59:53
    本机测试(指的是在自己电脑部署broker和使用客户端的情况):需要将所有证书签名common-name设置成自己本机的IP。 客户使用:需要使用本机IP设置签名证书的请求common-name 说明:一般情况下,提示SSL失败的...
  • message broker 常用命令

    千次阅读 2013-10-25 15:09:52
    “C:\IBM\MQSI\8.0.0.2\bin” 目录下 ...mqsistop MB8BROKER Or mqsistop MB8BROKER -i mqsistart MB8BROKER ‘mqsilist’ Or ‘mqsilist MB8BROKER’ mqsiservice Or ‘mqsiservice –v’ mqsideletebroker
  • kafka broker启动

    千次阅读 2019-03-29 16:23:20
    通过bin下面的kafka-server-start.sh 可以启动一个broker,命令如下:nohup ./kafka-server-start.sh config/server.properties & 这个脚本主要是调用kafka.kafka 这个类 exec $base_dir/kafka-run-class.sh $...
  • Service Broker 简介

    千次阅读 2010-10-19 17:15:00
    由于最近在跨域文件的传输,用到了SQL Broker,写在简单介绍一下,大部分来自MSDN。Service Broker 是 Microsoft SQL Server 2005 中的新技术,它可帮助数据库开发人员生成安全、可靠且可伸缩的应用程序。 由于 ...
  • kafka broker集群

    千次阅读 2015-08-11 17:03:14
    进入config目录,修改server....broker.id=0 port=9092 host.name=192.168.0.10 zookeeper.contact=192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181log.dirs=/home/www/kafka-logs 不同集群broker.id 和ho
  • # 集群名称 brokerClusterName=rocketmq-cluster ...brokerName=broker-a # 0 表示Master,>0 表示Slave brokerId=0 # nameServer地址,分号分割 namesrvAddr=rocketmq-nameserver1:9876 # 在发送消息时,自动创...
  • Kafka系列之broker配置

    千次阅读 2018-12-07 11:27:17
    kafka broker 配置 对应kafka安装目录config/server.properties文件的配置 broker.id 每一个Kafka的broker都有一个整数的标识。我们设置broker.id来标识它。默认这个整数是0。这个整数必须是在一个集群中是...
  • Service Broker 概述

    千次阅读 2012-06-26 16:39:14
    ServiceBroker(简称SSB)是基于数据库引擎提供的一个强大的异步编程模型,通过ServiceBroker,开发人员无需编写复杂的通信和消息程序,即可在数据库实例之间完成高效可靠的异步通信。 Service Broker具有如下特点...
  • RocketMQ——NameServer和Broker

    千次阅读 2019-08-16 21:21:50
    文章目录RocketMQ——NameServer和BrokerNameServerNameServer功能为什么不用zookeeper?BrokerBroker消息存储Broker的HA NameServer NameServer功能 NameServer负责维护Producer和Consumer的配置信息、状态信息,...
  • Service Broker 要点

    千次阅读 2008-04-17 08:33:00
    Service Broker 要点--Service Broker 简介Service Broker是使SQL Server成为一个构建可靠的分布式异步应用程序平台。Service Broker并不是一个通用的消息处理系统。Service Broker支持事务性消息处理,事务性消息...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 139,725
精华内容 55,890
关键字:

做broker需要什么