GVKun编程网logo

grabbitmq 基于giiwa 框架的 RabbitMQ 模块(rabbitmq架构)

8

本文将分享grabbitmq基于giiwa框架的RabbitMQ模块的详细内容,并且还将对rabbitmq架构进行详尽解释,此外,我们还将为大家带来关于1、RabbitMQ入门秘籍,三分钟带你快速了解

本文将分享grabbitmq 基于giiwa 框架的 RabbitMQ 模块的详细内容,并且还将对rabbitmq架构进行详尽解释,此外,我们还将为大家带来关于1、RabbitMQ 入门秘籍,三分钟带你快速了解 RabbitMQ、C++使用RabbitMQ类库做客户端与RabbitMQ Server通讯,生成C++可调用的rabbimq.*.dll的过程、nagios check_rabbitmq插件监控rabbitmq服务、RabbbitMQ 的配置 以在.NetCore 的 CAP 使用 RabbbitMQ 实现订阅与发布问题的相关知识,希望对你有所帮助。

本文目录一览:

grabbitmq 基于giiwa 框架的 RabbitMQ 模块(rabbitmq架构)

grabbitmq 基于giiwa 框架的 RabbitMQ 模块(rabbitmq架构)

grabbitmq 介绍

基于giiwa 框架的 RabbitMQ 模块

关于giiwa, 请参阅 http://giiwa.org

提供 RabbitMQ 的基本配置管理,并向其他模块提供MQ API,以实现分布式处理和简化其他模块的开发。

功能介绍

  • MQ消息队列注册api

  • MQ消息发送api

  • MQ连接配置管理

  • 包含一个Echo和一个例子程序

开发使用

  • 下载所有源码,然后直接导入Eclipse, 修改。

  • 进入项目目录, 直接运行 ant编译打包, 会生成 rabbitmq_1.0.1.zip。

  • 在你安装的giiwa 服务器中, 进入后台管理->系统管理->模块管理->上传模块,然后重启giiwa。

  • 重启后,进入后台管理->系统管理->RabbitMQL,查看该模块日志和配置管理。

rabbitmq模块包含了RabbitMQ Client的所有依赖包。是为第三方模块开发提供分布式消息服务的API模块。 性能测试,例子测试
1000x100,平均处理时间<100ms。

grabbitmq 官网

http://git.oschina.net/giiwa/rabbitmq.git

1、RabbitMQ 入门秘籍,三分钟带你快速了解 RabbitMQ

1、RabbitMQ 入门秘籍,三分钟带你快速了解 RabbitMQ

一、前言

刚开始接触 RabbitMQ 的时候,有些概念那理解起来简直是像风像雨又像雾,晦涩难懂。 这篇文章用尽可能浅显的语言来解释 RabbitMQ 的入门知识。毕竟是入门课程,并没有对很多概念进行深入说明,如果你想更深入的了解 RabbitMQ,可以继续关注本头条号后续发布的文章或者自己从网上搜寻了资料,自己探索研究。

二、RabbitMQ 是什么

官方定义:RabbitMQ 是一种消息中间件,用于处理来自客户端的异步消息。服务端将要发送的消息放入到队列池中。接收端可以根据 RabbitMQ 配置的转发机制接收服务端发来的消息。RabbitMQ 依据指定的转发规则进行消息的转发、缓冲和持久化操作,主要用在多服务器间或单服务器的子系统间进行通信,是分布式系统标准的配置。 趣味定义:兔子行动非常迅速而且繁殖起来也非常疯狂,用 Rabbit 来命名这个分布式软件,呼应了 RabbitMQ 的主要任务是处理海量的信息

三、安装

1、安装 erlang

下载地址:http://erlang.org/download/otp_win64_21.0.1.exe

2、安装 rabbitmq

下载地址:https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.7/rabbitmq-server-3.7.7.exe 如果你要安装其它版本,注意版本对应:https://www.rabbitmq.com/which-erlang.html

3、开启 web 访问

Windows 下:打开 CMD 进入 rabbitmq 的安装目录 执行 rabbitmq-plugins enable rabbitmq_management 命令 该命令,仅在首次运行 RMQ 时使用!!!目的就是加载 Web 插件!!!

4、访问测试:http://localhost:15672/

默认用户名:guest 默认密码:guest

四、核心概念

https://content.pivotal.io/rabbitmq/understanding-when-to-use-rabbitmq-or-apache-kafka

  • RabbitMQ broker,原话是 RabbitMQ isn’t a food truck, it’s a delivery service,其实说白了,就是一种传输服务。
  • Exchange: 接受生产者发送的消息,并根据 Binding 规则将消息路由给服务器中的队列。ExchangeType 决定了 Exchange 路由消息的行为。在 RabbitMQ 中,ExchangeType 常用的有 direct、Fanout 和 Topic 三种,在第三部分会详细介绍。
  • Message Queue: 消息队列。我们发送给 RabbitMQ 的消息最后都会到达各种 queue,并且存储在其中 (如果路由找不到相应的 queue 则数据会丢失),等待消费者来取。
  • Binding Key:它表示的是 Exchange 与 Message Queue 是通过 binding key 进行联系的,这个关系是固定的,初始化的时候,我们就会建立该队列。
  • Routing Key:生产者在将消息发送给 Exchange 的时候,一般会指定一个 routing key,来指定这个消息的路由规则。这个 routing key 需要与 Exchange Type 及 binding key 联合使用才能生,我们的生产者只需要通过指定 routing key 来决定消息流向哪里。
  • 我的注释:初始化的时候,exchange 与各个队列的绑定关系是通过 binding key 进行绑定的;发送消息的时候,使用的 routing key 就是 binding key 的某一个(实质,两者是一个含义,角度不同,名称含义不同) 对于消费端来说,只用知道 MQ 的 virtual host 和 queue 的名称就可以了。而对于发送端,则需要知道 exchange 和 routing key 的名称,相对而言 queue 的名称就不那么重要了(不过也要依 Exchange Type 而定)。

以下是 RabbitMQ 最简单的流程图,相信看到这里的你,对 MQ 的运作流程应该会有个基本的了解了:

五、三种 ExchangeType

http://www.rabbitmq.com/tutorials/amqp-concepts.html 这里介绍三种最主要的类型的 exchange:direct、fanout 和 topic。

1、direct 交换器

Direct 交换器很简单,如果是 Direct 类型,就会将消息中的 RoutingKey 与该 Exchange 关联的所有 Binding 中的 BindingKey 进行比较,如果相等,则发送到该 Binding 对应的 Queue 中。有一个需要注意的地方:如果找不到指定的 exchange,就会报错。但 routing key 找不到的话,不会报错,这条消息会直接丢失,所以此处要小心

2、fanout 交换器

Fanout 扇出,顾名思义,就是像风扇吹面粉一样,吹得到处都是。如果使用 fanout 类型的 exchange,那么 routing key 就不重要了。因为凡是绑定到这个 exchange 的 queue,都会受到消息。

3、topic 交换器

  • direct 是将消息放到 exchange 绑定的一个 queue 里(一对一);
  • fanout 是将消息放到 exchange 绑定的所有 queue 里(一对所有) 那可不可以把消息放到 exchange 绑定的一部分 queue 里,或者多个 routing key 可以路由到一个 queue 里呢?
  • topic 类型的 exchange 就可以实现(一对部分)。
  • topic 应用场景:打印不同级别的错误日志 例如,我们的系统出错后会根据不同的错误级别生成 error_levelX.log 日志,我们在后台首先要把所有的 error 保存在一个总的 queue(绑定了一个 *.error 的路由键)里,然后再按 level 分别存放在不同的 queue。

routing key 绑定如下图

更多资料分享,问题咨询,可以入群讨论:375412858 请入群索要代码

C++使用RabbitMQ类库做客户端与RabbitMQ Server通讯,生成C++可调用的rabbimq.*.dll的过程

C++使用RabbitMQ类库做客户端与RabbitMQ Server通讯,生成C++可调用的rabbimq.*.dll的过程

Step:

  1. download the latest rabbitmq-c via: https://github.com/alanxz/rabbitmq-c
  2. follow the document, download the cmake tool, make sure the right version of cmake. https://cmake.org/
  3. install the C compiler, if developed by VS2012, so set MSVC110=VS2012
  4. convert rabbitmq-c to C++ project via cmake command
    1. create "build" folder to rabbitmq-c root folder, then new bat file with below comman:
      REM -- create and put into /rabbitmq-c-0.9.0/build folder, then run the bat
      REM -- -DENABLE_SSL_SUPPORT=OFF disable SSL feature, otherwise will occur ssl error
      REM -- -G "Visual Studio 11 2012" , set the build environment
      cmake .. -DENABLE_SSL_SUPPORT=OFF -G "Visual Studio 11 2012"
      pause

       

  5. open the C++ project generate in step 4, then build rabbitmq project with Release version
  6. rename the rabbitmq.*.dll to rabbitmq.1.dll, then replace to the target folder

 

Troubleshooting:

  1. "Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY) (found suitable version "0.9.8h", minimum required is "0.9.8")"
    1. Solution1: add OPENSSL_ROOT_DIR command to bat file: -DOPENSSL_ROOT_DIR="C:\Users\zhengs\Downloads\openssl-0.9.8k_WIN32" https://stackoverflow.com/questions/16248775/cmake-not-able-to-find-openssl-library
    2. Solution2: Disable SSL suppport, add  "-DENABLE_SSL_SUPPORT=OFF" to command. https://github.com/conetix/librabbitmq

nagios check_rabbitmq插件监控rabbitmq服务

nagios check_rabbitmq插件监控rabbitmq服务

当在生产环境下使用某种服务时,相应的监控措施也应当完善起来,来检测服务是否正常和获取相关信息是很有必要的。 下面来说说使用nagios-plugins-rabbitmq来监控消息分发队列服务rabbitmq。目前提供6种检测类型: 1. check_rabbitmq_aliveness 使用/api/aliveness-test API来发送/接收消息。 2. check_rabbitmq_server 使用/api/nodes API来获取rabbitmq服务器节点的资源使用情况。 3. check_rabbitmq_objects 使用多种API来计算统计服务器上的各种对象实例。包括vhosts、exchanges、bindings、queues 、channels。 4. check_rabbitmq_overview 使用/api/overview API来收集pending、ready、unacknowledged消息。 5. check_rabbitmq_queue 使用 /api/queue API来收集pending、ready、unacknowledged消息和统计一个给定的队列的消费者的数量。 6. check_rabbitmq_watermark 使用/api/nodes API来确定mem_alarm是否设置为true。 1. 安装Nagios::Plugin perl模块 nagios-plugins-rabbitmq插件是以perl语言写的,需要安装Nagios::Plugin perl包。否则会报如下错误: Can''t locate Nagios/Plugin.pm in @INC (@INC contains: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at ./check_rabbitmq_server line 12. 我这里使用cpanm来安装,参见 《使用cpanm安装perl相关模块》。
# cpanm Nagios::Plugin
Building and testing Nagios-Plugin-0.36 ... OK
Successfully installed Nagios-Plugin-0.36
39 distributions installed
提示上面的信息说明安装成功。
大家也可以自己下载源码包进行编译安装。下载地址:http://search.cpan.org/CPAN/authors/id/T/TO/TONVOON/Nagios-Plugin-0.36.tar.gz 步骤如下:
# wget http://search.cpan.org/CPAN/authors/id/T/TO/TONVOON/Nagios-Plugin-0.36.tar.gz
# tar xvfz Nagios-Plugin-0.36.tar.gz
# cd Nagios-Plugin-0.36
# perl Makefile.PL
# make
# make install
2. 安装依赖模块 check_rabbitmq_* 如能正常使用,还需要安装下面依赖模块。
# cpanm LWP JSON
否则,会报如下错误 Can''t locate LWP/UserAgent.pm in @INC Can''t locate JSON.pm in @INC 3. 下载nagios-plugins-rabbitmq
# cd /usr/local/nagios/libexec/
# wget --no-check-certificate https://github.com/jamesc/nagios-plugins-rabbitmq/archive/master.zip
# unzip master 
# mv nagios-plugins-rabbitmq-master nagios-plugins-rabbitmq
# chown -R nagios.nagios nagios-plugins-rabbitmq/
4. 举例
# ./check_rabbitmq_aliveness -H 10.1.155.139 --port=15672 -u ''nagioscheck'' -p ''www.ttlsa.com'' 
RABBITMQ_ALIVENESS OK - vhost: /
# ./check_rabbitmq_overview -H 10.1.155.139 --port=15672 -u ''nagioscheck'' -p ''www.ttlsa.com''
RABBITMQ_OVERVIEW OK - messages OK (2) messages_ready OK (2) messages_unacknowledged OK (0) | messages=2;; messages_ready=2;; messages_unacknowledged=0;;
# ./check_rabbitmq_queue -H 10.1.155.139 --port=15672 -u ''nagioscheck'' -p ''www.ttlsa.com'' --queue=aliveness-test
RABBITMQ_QUEUE OK - messages OK (0) messages_ready OK (0) messages_unacknowledged OK (0) consumers OK (0) | messages=0;; messages_ready=0;; messages_unacknowledged=0;; consumers=0;;
# ./check_rabbitmq_objects -H 10.1.155.139 --port=15672 -u ''nagioscheck'' -p ''www.ttlsa.com''
RABBITMQ_OBJECTS OK - Gathered Object Counts | vhost=1;; exchange=15;; binding=2;; queue=1;; channel=0;;
5. 定义nagios command
# vim /usr/local/nagios/etc/objects/commands.cfg  
define command{
	command_name check_rabbitmq_aliveness      
	command_line $USER1$/nagios-plugins-rabbitmq/scripts/check_rabbitmq_aliveness  -H $ARG1$ --port=$ARG2$ -u $ARG3$ -p $ARG4$
}

define command{
	command_name check_rabbitmq_overview      
	command_line $USER1$/nagios-plugins-rabbitmq/scripts/check_rabbitmq_overview  -H $ARG1$ --port=$ARG2$ -u $ARG3$ -p $ARG4$
}

define command{
	command_name check_rabbitmq_queue      
	command_line $USER1$/nagios-plugins-rabbitmq/scripts/check_rabbitmq_queue  -H $ARG1$ --port=$ARG2$ -u $ARG3$ -p $ARG4$ --queue $ARG5$
}

define command{
	command_name check_rabbitmq_objects      
	command_line $USER1$/nagios-plugins-rabbitmq/scripts/check_rabbitmq_objects  -H $ARG1$ --port=$ARG2$ -u $ARG3$
}
用户名、密码可以定义到/usr/local/nagios/etc/resource.cfg 文件中,免得每次都要指定。 6. 创建rabbitmq监控项
define service{
    use                     generic-service
    host_name               121.207.22.33
    service_description     check_rabbitmq_aliveness
    normal_check_interval   2
    contact_groups          admin_4
    check_command           check_rabbitmq_aliveness!10.1.22.33!15672!nagioscheck!www.ttlsa.com
    }

define service{
    use                     generic-service
    host_name               121.207.22.33
    service_description     check_rabbitmq_queue
    normal_check_interval   2
    contact_groups          admin_4
    check_command           check_rabbitmq_queue!10.1.22.33!15672!nagioscheck!www.ttlsa.com!aliveness-test
    }
按照自己的需求,添加command和监控项。 转载请注明来自运维生存时间: http://www.ttlsa.com/html/4048.html

RabbbitMQ 的配置 以在.NetCore 的 CAP 使用 RabbbitMQ 实现订阅与发布问题

RabbbitMQ 的配置 以在.NetCore 的 CAP 使用 RabbbitMQ 实现订阅与发布问题

 最近在研究.netCore+CAP 实现订阅和发布,使用 RabbbitMQ 时候,遇到的一些坑,由于新旧版本不同,需要配置不同,导致容易出现一些误导

我目前使用的是 RabbbitMQ_server-3.7.8,大致的安装网上大把我就不多介绍,以下连接可以实现安装

https://blog.csdn.net/qq_33382113/article/details/78853680 

http://www.cnblogs.com/stulzq/p/7551819.html

安装 Erlang 和 RabbitMQ 之后,接下来需要修改环境变量

自定义环境变量

1.erl 环境变量配置

ERLANG_HOME=D:\Erlang\erl10.1

 

在 Path 中加入:%ERLANG_HOME%\bin;

测试 erl 配置是否正确,开始 - 运行 - cmd,输入 erl,显示如下,证明配置正确

2.RabbitMQ 环境变量配置

 看好 RabbitMQ 的安装位置,以及安装的版本,我的版本为 rabbitmq_server-3.7.8

RABBITMQ_SERVER=D:\RabbitMQ Server\rabbitmq_server-3.7.8

同样在 Path 中加入

%RABBITMQ_SERVER%\sbin;

3. 激活 rabbitmq_management

在 CMD 定位到安装目录然后输入如下命令

rabbitmq-plugins.bat enable rabbitmq_management

说明安装成功

4. 启动 RabbitMQ 服务

直接在命令行界面键入如下命令 

启动 net start RabbitMQ 

停止 net stop RabbitMQ

5.RabbitMQ 测试

 

测试地址 http://localhost:15672/ 
默认的用户名:guest 
默认的密码为:guest

如果直接这样在.NetCore 使用 RabbitMQ 实现订阅发布,会发现无法连接 MQ, 导致无法实现 CAP 的订阅,

最近我网上搜索了一些关这些方面的使用问题得出结论是:因为出于安全问题所以不能使用默认账号进行远程访问,所以必须要创建账号进行远程账号才能进行远程访问:

 http://www.cnblogs.com/xiaohua19920/p/9583986.html 这里会详细指导 创建账户和修改配置

今天的关于grabbitmq 基于giiwa 框架的 RabbitMQ 模块rabbitmq架构的分享已经结束,谢谢您的关注,如果想了解更多关于1、RabbitMQ 入门秘籍,三分钟带你快速了解 RabbitMQ、C++使用RabbitMQ类库做客户端与RabbitMQ Server通讯,生成C++可调用的rabbimq.*.dll的过程、nagios check_rabbitmq插件监控rabbitmq服务、RabbbitMQ 的配置 以在.NetCore 的 CAP 使用 RabbbitMQ 实现订阅与发布问题的相关知识,请在本站进行查询。

本文标签: