freeswitch 与 rabbitmq的结合与运用

本文介绍了如何将freeswitch的mod_amqp模块与rabbitmq集成,用于实现事件、命令和日志的传递。在编译mod_amqp模块时遇到的问题及解决方法,包括安装librabbitmq的依赖,并提供了amqp.conf.xml的基础配置示例,讲解了如何配置freeswitch连接rabbitmq。最后,说明了在rabbitmq控制台手动绑定队列以接收freeswitch推送的消息。

   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="exchange-type" value="fanout"/>
        <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。这样就大功告成,即可通过其他程序取下自己所需要的消息了。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值