当前位置: 首页 > 知识库问答 >
问题:

C和JMS——如何连接这两者?

单于阳
2023-03-14

我是C语言的新手,但对JavaEE有很多经验。

我需要编写一个非常异步的小应用程序。它从HTTP接收数据并将其存储在队列中(它需要有保证的传输和非常高的吞吐量),比如ActiveMQ或OpenMQ,可能通过JMS。

然后另一个C应用程序/监听器从队列中取出数据(通过某个监听器,该监听器由队列直接激活,而不是通过我的池激活),连接到MySQL数据库,进行一些业务逻辑计算,并将消息发送到另一个队列。

在JavaEE中,这将是一个将消息发送到JMS队列的Web应用。消息驱动Bean将是EJB模块中这些消息的消费者,会话EJB将向传出的JMS队列发送消息。

有C经验的人能给我解释一些基础知识吗:

>

  • JMS是C在保证交付队列中的唯一选项吗?您是否建议使用ActiveMQ或其他方式,记住消息使用者将使用C语言。

    我是否需要在C中创建某种多线程守护进程来监听队列消息,或者这个线程创建(消息消耗)是ActiveMQ C消费者实现的一部分?

    如能就如何实施上述方案提出任何其他建议,将不胜感激。

    编辑:我希望消息代理和客户端在C.ActiveMQ是一个Java的产品,这不是我们真正需要的。

  • 共有1个答案

    姜振濂
    2023-03-14

    1-JMS-Java消息服务只是Java和Java的API参考。除了AMQP之外,没有适用于C的消息传递标准(在我看来,AMQP在跨实现方面并没有发挥应有的作用)。对于C,对于每个message broker实现,您必须依赖于特定的供应商库。

    实施建议:

    >

  • ActiveMQ——它有一个很好的C API(称为CMS),它是以JMS建模和命名的——所以你会对这个API很熟悉。主代理将在Java上运行,而非更少的代理可能是最简单的选择。

    IBM WebSphere MQ-非开源企业级代理,运行本机(用C编写)并具有C库。当你通过学习曲线,价格也不重要时,你会感觉很好。

    RabbitMQ——非常流行的可靠消息传递,具有高性能和开放源代码。具有C客户机LIB,但使用Erlang编写,并在Erlang/otp运行时内运行。

    ApacheQPID——鲜为人知的AMQP/JMS代理。服务器端有两种风格,Java和C,其中C代理具有更好的性能。附带C客户端LIB。

    2-对于多线程,JMS规范也没有真正的解决方案。它更像JavaEE容器(或Spring框架),它简单地包装了线程的管理,并减轻了开发人员的负担。在这种情况下,ActiveMQ只提供了几个支持类,据我所知,其他供应商库也没有。所以,寻找一些包装线程的库(我不知道)或者自己处理消费者线程。不应该那么乱,做得对。

  •  类似资料:
    • 我最近从GlassFish 4迁移到Wildfly 8.1 我在GlassFish中配置了JMS连接工厂和目标: 在Wildfly中,我进入配置- 但它没有给我和例外,也没有用以前的电子邮件设置发送电子邮件

    • 问题内容: 我有一个基于python的程序,该程序从连接到rs232电缆的端口读取串行数据。我想将此处获得的数据传递给C程序,该程序将处理计算密集型方面。我一直在检查网络,发现的所有内容都是基于Linux的。 问题答案: 使用管道并弹出 解决此问题的最简单方法可能就是使用。该函数在Python和C中都可用,并且将使用管道将任何一种语言的程序与另一种语言连接。 有了管道后,您可能应该通过它发送yam

    • 问题内容: 我有两个相等的大小。列表1由10个名称组成,列表2由其电话号码组成。 我想将姓名和号码合而为一。我该怎么做呢? 问题答案: 您可以用于将第二个列表的元素添加到第一个列表: 编辑: 根据上面的说明(“ 我想要新的Arraylist中具有名称和编号的单个String。 ”),您需要循环浏览第一个列表并将第二个列表中的项目追加到它。 像这样: 如果输入: 你会得到:

    • 这是我制作的hashmap(Ik它不是最好的,也没有太多的逻辑),我想知道如果用户输入像“DVIII”这样的数据,其中“d”的值为“500”,“viii”的值为“8”,然后将它们打印为DVIII=5008,那么如何连接hashmap的值

    • 我需要高级步骤来连接到远程JMS提供程序。 我有一些客户端应用程序希望在JNDI中基于文件系统进行查找,以获得JMS提供程序的连接工厂。 我知道在JMS管理(MQ Explorer)中,我们可以创建连接工厂。这就是创造。绑定文件。我如何使用这个。将文件绑定到我的客户端应用程序系统? 客户端应用程序系统是否应该包含JMS管理员来创建。同一系统或中的绑定。是否应将绑定单独导入到客户端系统? 如果使用文

    • 我有一些消息生产者正在使用ActiveMQ发送有关某些事件的JMS消息。但是,与ActiveMQ的连接可能不会一直处于关闭状态。因此,事件被存储,当建立连接时,它们被认为是读取和发送的。这是我的代码: 我想创建某种将在建立连接并处理未发送事件时调用的Application ationEventListener。我浏览了JMS、Spring框架和ActiveMQ留档,但找不到任何线索如何将我的侦听器