zoukankan      html  css  js  c++  java
  • PHP用ActiveMq 实现消息列队

    1.各种安装
    2.简单配置:

    jetty.xml
    localhost:8161

    配置:
    activemq添加stomp的61613接口
    conf/activemq.xml

    <transportConnector name="stomp+nio" uri="stomp+nio://0.0.0.0:61613?transport.closeAsync=false"/>
    
    3.创建消息列队
    <?php
    $queue = "/queue/userReg";
    
    try {
        $stomp = new Stomp('tcp://127.0.0.1:61613');
    } catch (StompException $e) {
        die('Connection failed: ' . $e->getMessage());
    }
    
    
    $obj = new Stdclass();
    $obj->username = 'smartom';
    $obj->password = '123';
    $obj->status = 1;
    $stomp->send('/queue/userReg', json_encode($obj));
    
    4.销毁消息列队
    <?php
    $queue = "/queue/userReg";
    
    try {
        $stomp = new Stomp('tcp://127.0.0.1:61613');
    } catch (StompException $e) {
        die('Connection failed: ' . $e->getMessage());
    }
    
    $isSubscribe = $stomp->subscribe($queue);       //订阅
    
    while ($stomp->hasFrame()) {                      //循环读取队列
    	$frame = $stomp->readFrame();				  //读取下一个
        $user =  json_decode($frame->body);
        /*
        处理消息
        */
        if($user->status=1){
            $user->status=2;
        	$stomp->send('/queue/sendVerify', $frame->body);  //发送下一个
        	$stomp->ack($frame);		//销毁列队
        }
    
        sleep(3);
       
    }
    

    5.开启事务

    $queue1 = "/queue/userReg";
    $queue2 = "/queue/sendMsg";
    $stomp->begin("news");
      if($stomp->send($queue1,json_encode($mainSite), array('transaction' => 'news')) && $stomp->send($queue2,json_encode($searchIndex) , array('transaction' => 'news')) )//发布到主站消息
     {
            $stomp->commit("news");
     }
    

    6.topic多个订阅者

    queue是单个订阅者

    $broker = 'tcp://192.168.222.129:61613';
    $queue = "/topic/order_create";
    

    7.集群配置

    8.共享文件系统

    使用共享系统来做 Master/slave集群

    9.共享数据库方式

    所有消息读写其实都是数据库操作,性能完全取代与数据库的性能。

    10.基于zookeeper 的主从(levelDB Master/Slave)

    基于zookeeper 来选举出一个master ,其他节点自动作为slave实时同步消息.

    安装相应工具
    yum -y install nfs-utils rpcbind
    nfs(network file system) 网络文件系统
    rpcbind 是一个RPC服务,主要是在nfs 共享时负责通知客户端,服务器的nfs端口号

  • 相关阅读:
    pygame系列_pygame的各模块叙述
    pygame系列_pygame安装
    python开发_thread_线程基础
    python开发_thread_布朗运动
    python开发_thread_线程_搜索本地文件
    python学习两月总结_汇总大牛们的思想_值得收藏
    C# .net中获取台式电脑中串口设备的名称
    C# ini文件操作【源码下载】
    C#中的串口通信
    Winform TreeView 查找下一个节点
  • 原文地址:https://www.cnblogs.com/subtract/p/8594012.html
Copyright © 2011-2022 走看看