`
fsword
  • 浏览: 169016 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ruby 与 activemq 集成初探

阅读更多
(今天一天就这么些结果,唉,真没效率......)

这个事情起因于公司的一个短信产品,老实说,我们这些门外汉做的实在不怎么样,加上进度控制的不好,前前后后又把人调来调去,现在是一个外包的哥们帮我一起擦屁股。

东西好改,不过web层面的jsp实在是太乱了,struts2也用的不好,中间我又要求加入了一些比较复杂的动态能力,现在jsp已经快要人见人厌了。

这个软件骨子里是一个消息为中心的产品,java当然是jms,不过前一阵研究activemq时发现它可以通过stomp支持ruby,这可是让人高兴的事情,一直觉得ruby/rails适合前端,如果用消息系统进行解耦,那就完美了,于是研究一下

ruby自己的stomp库挺简单的,但是与jms集成就没什么参考文章了,activemq网站推荐用activemessaging这个插件来封装,于是试了一下,一开始挺简单,但是有个错误:
adapter wmq not loaded: no such file to load -- wmq/wmq


查了一下,有个老外说是load顺序问题,解决办法是注释掉 poller.rb 中的
require 'activemessaging'


然后就可以用了,不过发现这样拿不到MapMessage对象的数据,把传给on_message的对象打出来看看:
  def on_message(message)
    p "HelloProcessor received: " + message.inspect
  end

发现是个空字符串,奇怪,就算没有对应的对象,JMS本身的信息为什么也没有?

读代码,原来被封装掉了,参见activemessaging的processor.rb :
      @message = message
      return on_message(message.body)

详细看看,原来stomp和jms的对应还有些问题,TextMessage和BytesMessage的处理是用Content-Length来区分的:

引用
ActiveMQ uses the content-length header to determine if a Stomp message should be mapped to a JMS TextMessage or a BytesMessage (http://activemq.apache.org/stomp.html) - if a Stomp message contains a content-length header field it will be converted to a BytesMessage otherwise it will be converted to a TextMessage.


看来activemessaging是一个比较脱离JMS技术细节的封装,可是我要充分利用它本身的特性,看来此路不通,需要直接搞stomp才行。

另外还有个遗留问题,不知道有没有人了解情况:
activemessaging的输出日志有这么一段话:
引用

#<MissingSourceFile: no such file to load -- Win32API>
*** below you find all exception objects found in memory, some of them may have been thrown in your application, others may just be in memory because they are standard exceptions ***
#<NoMemoryError: failed to allocate memory>
#<SystemStackError: stack level too deep>
#<fatal: exception reentered>
#<Errno::ENOENT: No such file or directory - /home/john/NetBeansProjects/amq/tmp/poller0.pid>
#<ActiveMessaging::StopProcessingException: Time to stop.>

感觉很诡异,为什么ubuntu上会要求Win32API呢?

0
0
分享到:
评论
1 楼 fsword 2009-07-29  
考虑看看amqp了,这个玩意不错,erlang做broker,ruby、java都有client,不知道api的设计是否够简洁。

相关推荐

    activemq集成tomcat

    通过这种方式,Spring应用就可以通过这个`connectionFactory` bean与ActiveMQ建立连接,并发送或接收消息。同时,我们还可以定义消费者的bean来订阅`jms/queue/MyQueue`: ```xml ``` 在这个例子中,`...

    Spring与ActiveMQ整合完整案例

    本案例将详细讲解如何将Spring与ActiveMQ整合,以提升系统的可扩展性和解耦性。 1. **Spring框架**:Spring是一个全方位的开发框架,提供了依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented ...

    Springboot ActiveMQ 集成.rar

    首先,让我们详细探讨一下Spring Boot与ActiveMQ的集成过程: 1. **配置ActiveMQ** - 在`application.properties`或`application.yml`中添加ActiveMQ的相关配置。例如,设置服务器地址、端口、用户名和密码: ```...

    Spring boot 和内置ActiveMQ集成例子.zip

    将Spring Boot与ActiveMQ集成可以提供强大的消息处理能力,使应用能够解耦组件,提高可扩展性和容错性。 本文将详细讲解如何使用Spring Boot与内置的ActiveMQ进行集成,以及如何通过代码实现这一过程。 首先,我们...

    activemq springMVC集成jar包

    将ActiveMQ集成到Spring MVC应用中,可以提升系统的可扩展性和解耦性。 集成ActiveMQ到Spring MVC主要涉及以下几个关键知识点: 1. **JMS(Java Message Service)**:这是Java平台定义的一个标准接口,用于规范...

    spring+activeMQ集成

    spring集成activeMQ框架 配置方式(内含三种常见的消息接受监听方式的配置)JMS 配置测试等等

    Spring集成ActiveMQ配置

    Spring框架与ActiveMQ的集成,为开发者提供了一种高效、可靠的JMS消息处理机制。在企业级应用中,这种集成能够极大地提升系统的响应速度和容错能力,特别是在需要异步通信和分布式事务处理的场景下。下面,我们将...

    ActiveMQ与Tomcat整合教程

    【ActiveMQ与Tomcat整合教程】是关于如何在Apache Tomcat服务器中集成开源消息中间件ActiveMQ的详细步骤。这个教程适用于Tomcat 6.0.14版本,但请注意不同版本可能存在配置上的差异。 首先,为了使Tomcat能够识别和...

    Spring MVC + JPA + MQ + redis +activemq 集成项目实例

    在本项目实例中,我们探讨的是一个基于Spring MVC、JPA、消息队列MQ以及缓存技术redis和ActiveMQ的集成应用。这个实例涵盖了多种关键的技术栈,旨在提供一个全面的解决方案,帮助开发者构建高效、可扩展的后端系统。...

    activeMQ集成SpringMVC,三种方式监听

    在Spring MVC框架中集成ActiveMQ,可以提升系统的解耦性和可扩展性。以下是集成ActiveMQ到Spring MVC应用的三种常见方式,以及相关知识点的详细说明: 1. **基于XML配置的集成** 在Spring MVC项目中,我们可以通过...

    ActiveMQ与spring集成实例之使用Maven构建

    标题中的“ActiveMQ与Spring集成实例之使用Maven构建”是指在Java开发环境中,通过Maven构建工具将Apache ActiveMQ消息中间件与Spring框架整合在一起的实际操作案例。这个主题涵盖了几大关键知识点: 1. **Apache ...

    qt activemq mqtt 动态库

    通过使用这些库,开发者可以在Qt应用程序中集成MQTT功能,从而与ActiveMQ服务器进行通信,实现设备间的消息传递。 在使用这些库文件时,开发者需要注意以下几点: 1. **集成库文件**:首先,需要将提供的lib和dll...

    ActiveMQ与spring集成实例之使用消息监听器

    **ActiveMQ与Spring集成实例详解** ActiveMQ是Apache软件基金会下的一个开源项目,它是一个功能丰富的Java消息服务(JMS)提供商,支持多种协议,并且能够处理大量的并发消息传输。而Spring框架则是一个广泛使用的...

    ActiveMQ与spring集成实例

    本文将深入探讨如何将ActiveMQ与Spring框架集成,以便在实际项目中实现高效的消息传递。 首先,我们需要理解ActiveMQ的核心功能。ActiveMQ支持多种消息协议,如OpenWire、STOMP、AMQP、MQTT等,能够处理点对点...

    SpringBoot集成ActiveMQ实例详解.docx

    在本文中,我们将深入探讨如何在Spring Boot应用中集成ActiveMQ,这是一个强大的Java消息服务(JMS)实现。首先,我们需要理解JMS的基本概念。Java消息服务(JMS)是Java平台上的一个标准API,它定义了应用程序如何...

    ActiveMQ与spring集成实例之使用消息转换器

    **ActiveMQ与Spring集成实例——使用消息转换器** 在企业级应用开发中,消息队列(Message Queue,MQ)作为一种解耦和异步处理的重要工具,被广泛应用。Apache ActiveMQ 是一个开源的消息中间件,它支持多种消息...

    springboot集成activemq实现消息接收demo

    在IT行业中,Spring Boot是一个非常流行的微服务框架,它简化了Spring应用的开发过程。而ActiveMQ是Apache出品的一款...在实际生产环境中,ActiveMQ还可以与其他中间件、微服务架构结合,提供更强大的消息处理能力。

    Netty与ActiveMQ的程序代码范例

    在“Netty与ActiveMQ的程序代码范例”中,我们可以预期找到的是如何将这两个强大的工具结合使用的实例。Netty通常用作网络层的基石,处理TCP/IP协议栈中的低级任务,如套接字管理、数据缓冲和高效的I/O操作。而...

Global site tag (gtag.js) - Google Analytics