在测试NSQ的Quick Start发现这样一个问题,就是同时只能有一个订阅实例

$ nsq_to_file --topic=test --output-dir=/tmp --lookupd-http-address=127.0.0.1: 

当存在两个实例时则消息会被发送给其中的一个实例,而另一个则获取不到消息

在阅读到NSQ中NSQD的启动参数时,发现其支持在一个topic下建立多个channel,通过向topic发送消息,会向所有的channel发布。

测试

//创建topic
$ curl http://10.191.197.209:4151/create_topic?topic=public //创建三个channel $ curl http://10.191.197.209:4151/create_channel?topic=public\&channel=t1
$ curl http://10.191.197.209:4151/create_channel?topic=public\&channel=t2
$ curl http://10.191.197.209:4151/create_channel?topic=public\&channel=t3 //建立nsqdata t1 t2 t3四个文件夹分别存放nsqd数据及三个测试channel数据
mkdir nsqdata t1 t2 t3 //启动nsqd,nsqd可以独立启动,无需启动nsqlookupd
nsqd -data-path=/home/sunsl/nsqdata //启动三个channel的接收端,这里使用nsq_to_file监听nsqd的tcp端口
nsq_to_file --topic=public --channel=t1 --output-dir=/home/sunsl/t1 --nsqd-tcp-address=127.0.0.1:
nsq_to_file --topic=public --channel=t2 --output-dir=/home/sunsl/t2 --nsqd-tcp-address=127.0.0.1:
nsq_to_file --topic=public --channel=t3 --output-dir=/home/sunsl/t3 --nsqd-tcp-address=127.0.0.1: //向public发送测试数据
curl -d '向三个channel发送数据' 'http://10.191.197.209:4151/put?topic=public'
//cat t1,t2,t3文件夹下的log文件,数据显示正常获取

问题

  • 接收数据有延迟,原因未知,待查

NSQ的消息订阅发布测试的更多相关文章

  1. Redis之Redis消息订阅发布简介

    概念: Redis消息订阅发布是进程间的一种消息通信模式,发送者pub发送消息,订阅者sub接收消息. 使用须知: 需要先订阅后发布,才能接收到消息.在订阅时,相当于创建了可供发布的频道. 案例: ( ...

  2. 关于laravel5 消息订阅/发布的理解初

    laravel5.4感觉官网文档说滴不够详细...安装predis官网很详细,这里略过.... 生成命令 直接使用 Artisan 命令 make:command,该命令会在 app/Console/ ...

  3. [SpingBoot guides系列翻译]Redis的消息订阅发布

    Redis的消息 部分参考链接 原文 CountDownLatch 概述 目的 这节讲的是用Redis来实现消息的发布和订阅,这里会使用Spring Data Redis来完成. 这里会用到两个东西, ...

  4. Redis中的简单事物以及消息订阅发布

    Redis支持简单的事物,但是没有mysql的Innodb支持的那么的完善 我们接下来看一下Redis和Mysql的事物的一个对比:   MySQL Redis 开启 start transactio ...

  5. 基于Redis的消息订阅/发布

    在工业生产设计中,我们往往需要实现一个基于消息订阅的模式,用来对非定时的的消息进行监听订阅. 这种设计模式在 总线设计模式中得到体现.微软以前的WCF中实现了服务总线 ServiceBus的设计模式. ...

  6. SpringBoot+Redis 实现消息订阅发布

    什么是 Redis Redis 是一个开源的使用 ANSI C语言编写的内存数据库,它以 key-value 键值对的形式存储数据,高性能,读取速度快,也提供了持久化存储机制. Redis 通常在项目 ...

  7. 组件通信之全局事件总线 & 消息订阅发布

    全局事件总线 介绍 一种组件间通信的方式,适用于任意组件间通信. 在使用全局事件总线之前需要一些知识准备 所有组件实例的原型对象的原型对象就是 Vue 的原型对象,即VueComponent.prot ...

  8. 【并发】9、借助redis 实现生产消费,消息订阅发布模式队列

    这个就是一个消息可以被多次消费的范例了 其实这个实现的方式可以参考我之前的设计模式,观察者模式 https://www.cnblogs.com/cutter-point/p/5249780.html ...

  9. C# 数据推送 实时数据推送 轻量级消息订阅发布 多级消息推送 分布式推送

    前言 本文将使用一个NuGet公开的组件技术来实现数据订阅推送功能,由服务器进行推送数据,客户端订阅指定的数据后,即可以接收服务器推送过来的数据,包含了自动重连功能,使用非常方便 nuget地址:ht ...

随机推荐

  1. FP-tree推荐算法

    推荐算法大致分为: 基于物品和用户本身 基于关联规则 基于模型的推荐 基于物品和用户本身 基于物品和用户本身的,这种推荐引擎将每个用户和每个物品都当作独立的实体,预测每个用户对于每个物品的喜好程度,这 ...

  2. logging mod

    http://blog.csdn.net/freeking101/article/details/52448580

  3. Oracle RAC asm常用命令

    在Oracle RAC环境下,使用grid帐号执行 运行asmcmd进入asm命令模式,如: [grid@oradb-node1 ~]$ asmcmd ASMCMD> ASMCMD> du ...

  4. net不安装Oracle11g客户端直接使用ODAC

    好处: 1.不安装客户端也能访问服务器上的oracle(假设Application Server与DB Server 分开) 2.不需要安装ODAC 3.不需要配置TnsNames.Ora文件 缺点: ...

  5. TLB初始化 Missing Handler,MIPS R3K mips_init_tlb

    #include <mips/r3kc0.h> LEAF(mips_init_tlb) mfc0 t0, C0_ENTRYHI # 保存ASID mtc0 zero, C0_ENTRYLO ...

  6. [Nginx] - PHP+FPM相关的配置

    CodeIgniter的配置: worker_processes ; events { worker_connections ; } http { include mime.types; defaul ...

  7. spring mvc 深入学习

    参考文章: 第二章 Spring MVC入门 —— 跟开涛学SpringMVC Spring MVC 3.0 深入总结:http://blog.csdn.net/sunitjy/article/det ...

  8. Lab_4_SysOps_Monitoring_Linux_v2.5

    System Operations - Lab 4: Monitoring with CloudWatch (Linux) - 2.5 ================================ ...

  9. 用户输入函数--raw_input、input

    1.raw_input python2.7用户输入字符串的话用raw_input.如果使用input输入字符串的话需要先把字符串放到变量中才可,但是用input输入数字的话是可以直接输入的,所以说在p ...

  10. 【巩固】Bootstrap笔记一

    这两天开始重新巩固一下bootstrap的学习,群里有朋友介绍说麦子学院的教程不错,特地看了一下,有2个项目练习,所以跟着做了一下,下面开始笔记. <button class="nav ...