rabbitmq作为目前流行的消息队列,可以持久化,处理性能高,功能齐全,采用amqp协议。
freeswitch中拥有mod_amqp模块,也采用amqp,所以可以使用freeswitch将 事件、命令、日志推送给rabbitmq,再使用其他语言与rabbitmq相结合(如Java),实现自己所想要的功能(报表系统,日志系统、状态系统、统计系统等等)
这里首先介绍一个mod_amqp模块编译的过程,这个模块直接进入源码编译make mod_amqp-install,不过本人编译却报了
Makefile:851: *** You must install librabbitmq1 and librabbitmq-dev to build this module. Stop.错误,就算下载了这些依赖依旧无法安装成功,后来发现原因是由于yum中没有源生的librabbitmq1,需要去下载源生的rpm包进行编译安装。
首先需要进入rpm官网 查找下载
mpg123.rpm
libmpg123-devel.rpm
libmpg123.rpm
将以上3个包 rpm -ivh 安装完成后,就可以在源码目录下执行make mod_amqp-install了,编译完成后,就可以开始配置freeswitch的amqp模块进行rabbitmq的连接了。
开始amqp模块的配置,进入/usr/local/freeswitch/conf/autoload_configs目录下,vi amqp.conf.xml
这里主要拿 <producers>模块来介绍一下基础配置,<commands>,<logging>照其配置仿造即可。
<connections>
<connection name="primary">
<!-- 这里填入你mq部署的ip -->
<param name="hostname" value="rabbitmqip"/>
<!-- 填入mq的库名,如果使用默认库 直接/即可 -->
<param name="virtualhost" value="rabbithost"/>
<!-- rabbit的账号 -->
<param name="username" value="user"/>
<!-- rabbit的密码 -->
<param name="password" value="pwd"/>
<!-- rabbit的端口 -->
<param name="port" value="5672"/>
<!-- 这里配置心跳 -->
<param name="heartbeat" value="0"/></connection>
<connection name="secondary">
<param name="hostname" value="rabbitmqip"/>
<param name="virtualhost" value="rabbithost"/>
<param name="username" value="user"/>
<param name="password" value="pwd"/>
<param name="port" value="5672"/>
<param name="heartbeat" value="0"/>
</connection>
</connections>
<params>
<!-- 这里设置上rabbitmq交换机的名称 -->
<param name="exchange-name" value="fsbc_exchagne"/>
<!-- 交换机的模式,这里需要特别注意,因为fs我没有发现绑定上queues的方法,所以这里要设置成广播模式,方便在rabbitmq上进行相关配置-->
<param name="circuit_breaker_ms" value="10000"/>
<param name="reconnect_interval_ms" value="1000"/>
<param name="send_queue_size" value="5000"/>
<param name="enable_fallback_format_fields" value="1"/>
<!-- 这里格式化fs推送报文 -->
<param name="format_fields" value="#FreeSWITCH,FreeSWITCH-Hostname,Event-Name,Event-Subclass,Unique-ID"/>
<!-- 这里订阅fs的事件,可以根据所需要的事件进行订阅,这里只订阅了destory事件 -->
<param name="event_filter" value="SWITCH_EVENT_CHANNEL_DESTROY"/>
</params>
配置完成进入fs_cli,执行 load mod_amqp,就可以看到连接rabbit的信息了,如果提示Amqp connect successful- connected 的成果信息了。
这些执行完成后并没有,因为fs只将消息推送到了交换器上,消息并没有进入队列,所以在其他程序上会出现无法取出的情况,所以需要进入rabbitmq的控制台,rabbmqip:15672,输入你对应的账号密码,进入exchanges,选择在fs上设置的exchanges,手动bind一个queue。这样就大功告成,即可通过其他程序取下自己所需要的消息了。
本文介绍了如何将freeswitch的mod_amqp模块与rabbitmq集成,用于实现事件、命令和日志的传递。在编译mod_amqp模块时遇到的问题及解决方法,包括安装librabbitmq的依赖,并提供了amqp.conf.xml的基础配置示例,讲解了如何配置freeswitch连接rabbitmq。最后,说明了在rabbitmq控制台手动绑定队列以接收freeswitch推送的消息。
3993

被折叠的 条评论
为什么被折叠?



