(今天一天就这么些结果,唉,真没效率......)
这个事情起因于公司的一个短信产品,老实说,我们这些门外汉做的实在不怎么样,加上进度控制的不好,前前后后又把人调来调去,现在是一个外包的哥们帮我一起擦屁股。
东西好改,不过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呢?
分享到:
相关推荐
通过这种方式,Spring应用就可以通过这个`connectionFactory` bean与ActiveMQ建立连接,并发送或接收消息。同时,我们还可以定义消费者的bean来订阅`jms/queue/MyQueue`: ```xml ``` 在这个例子中,`...
本案例将详细讲解如何将Spring与ActiveMQ整合,以提升系统的可扩展性和解耦性。 1. **Spring框架**:Spring是一个全方位的开发框架,提供了依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented ...
首先,让我们详细探讨一下Spring Boot与ActiveMQ的集成过程: 1. **配置ActiveMQ** - 在`application.properties`或`application.yml`中添加ActiveMQ的相关配置。例如,设置服务器地址、端口、用户名和密码: ```...
将Spring Boot与ActiveMQ集成可以提供强大的消息处理能力,使应用能够解耦组件,提高可扩展性和容错性。 本文将详细讲解如何使用Spring Boot与内置的ActiveMQ进行集成,以及如何通过代码实现这一过程。 首先,我们...
将ActiveMQ集成到Spring MVC应用中,可以提升系统的可扩展性和解耦性。 集成ActiveMQ到Spring MVC主要涉及以下几个关键知识点: 1. **JMS(Java Message Service)**:这是Java平台定义的一个标准接口,用于规范...
spring集成activeMQ框架 配置方式(内含三种常见的消息接受监听方式的配置)JMS 配置测试等等
Spring框架与ActiveMQ的集成,为开发者提供了一种高效、可靠的JMS消息处理机制。在企业级应用中,这种集成能够极大地提升系统的响应速度和容错能力,特别是在需要异步通信和分布式事务处理的场景下。下面,我们将...
【ActiveMQ与Tomcat整合教程】是关于如何在Apache Tomcat服务器中集成开源消息中间件ActiveMQ的详细步骤。这个教程适用于Tomcat 6.0.14版本,但请注意不同版本可能存在配置上的差异。 首先,为了使Tomcat能够识别和...
在本项目实例中,我们探讨的是一个基于Spring MVC、JPA、消息队列MQ以及缓存技术redis和ActiveMQ的集成应用。这个实例涵盖了多种关键的技术栈,旨在提供一个全面的解决方案,帮助开发者构建高效、可扩展的后端系统。...
在Spring MVC框架中集成ActiveMQ,可以提升系统的解耦性和可扩展性。以下是集成ActiveMQ到Spring MVC应用的三种常见方式,以及相关知识点的详细说明: 1. **基于XML配置的集成** 在Spring MVC项目中,我们可以通过...
标题中的“ActiveMQ与Spring集成实例之使用Maven构建”是指在Java开发环境中,通过Maven构建工具将Apache ActiveMQ消息中间件与Spring框架整合在一起的实际操作案例。这个主题涵盖了几大关键知识点: 1. **Apache ...
通过使用这些库,开发者可以在Qt应用程序中集成MQTT功能,从而与ActiveMQ服务器进行通信,实现设备间的消息传递。 在使用这些库文件时,开发者需要注意以下几点: 1. **集成库文件**:首先,需要将提供的lib和dll...
**ActiveMQ与Spring集成实例详解** ActiveMQ是Apache软件基金会下的一个开源项目,它是一个功能丰富的Java消息服务(JMS)提供商,支持多种协议,并且能够处理大量的并发消息传输。而Spring框架则是一个广泛使用的...
本文将深入探讨如何将ActiveMQ与Spring框架集成,以便在实际项目中实现高效的消息传递。 首先,我们需要理解ActiveMQ的核心功能。ActiveMQ支持多种消息协议,如OpenWire、STOMP、AMQP、MQTT等,能够处理点对点...
在本文中,我们将深入探讨如何在Spring Boot应用中集成ActiveMQ,这是一个强大的Java消息服务(JMS)实现。首先,我们需要理解JMS的基本概念。Java消息服务(JMS)是Java平台上的一个标准API,它定义了应用程序如何...
**ActiveMQ与Spring集成实例——使用消息转换器** 在企业级应用开发中,消息队列(Message Queue,MQ)作为一种解耦和异步处理的重要工具,被广泛应用。Apache ActiveMQ 是一个开源的消息中间件,它支持多种消息...
在IT行业中,Spring Boot是一个非常流行的微服务框架,它简化了Spring应用的开发过程。而ActiveMQ是Apache出品的一款...在实际生产环境中,ActiveMQ还可以与其他中间件、微服务架构结合,提供更强大的消息处理能力。
在“Netty与ActiveMQ的程序代码范例”中,我们可以预期找到的是如何将这两个强大的工具结合使用的实例。Netty通常用作网络层的基石,处理TCP/IP协议栈中的低级任务,如套接字管理、数据缓冲和高效的I/O操作。而...