我没有太多的套接字编程经验,但我尝试了解了一些相关知识。我比较熟悉 MDB 和消息队列。有人告诉我队列(例如 MDB)与直接套接字连接相差不大。请问有人能够为我比较这两个概念吗?
我在以下设置中遇到了问题: 一个Java应用程序向JMS队列发送电子邮件消息,然后监听队列的MDB使用onMessage方法获取电子邮件消息,它在Gmail SMTP上打开连接,将电子邮件发送到SMTP并关闭连接,在JMS队列中处理所有消息。 当我队列中最多有5条消息时,这很有效。 5个不...
我在想,为什么不使用Session Beans而选择Message Driven Beans呢? 如果您可以从EJB中调用远程方法,那么为什么要费事地使用发送/接收消息的Message Driven Beans(相对于会话Bean而言开发更加困难)呢? 在哪些场景下Message Driv...
一个异步的JMS(Java消息服务)消费者与一个实际的MDB(消息驱动Bean)之间有什么区别呢?我看到的唯一区别是MDB类具有@MessageDriven注释,而异步的JMS消费者则没有。 还有其他什么我忽略了吗?
我无法将javax.jms.ConnectionFactory注入到我的独立JMS客户端中。 在下面的代码中,connectionFactory.createConnection()会引发java.lang.NullPointerException异常。 JmsClient.java pu...
我是一个相对新手的EJB。背景:我有一个使用WebSphere默认消息提供程序接收MapMessages的MDB,该MDB具有java.sql.DataSource以执行一些工作,使用preparedstatement、jdbc事务等。我在ibm-ejb-bnd.xml和ejb-jar.xml...
以下是最佳实践,可以用于在@MessageDriven bean对数据库执行某些操作后,在失败时回滚DB事务,但同时也希望JMS消息不被重新传递。有几种方法可能有效: 1. 使用@TransactionManagement(type=BEAN)和UserTransaction,并在捕获异常...
据我所知,从EJB中生成线程是非法的,因为这可能会干扰EJB的生命周期。但是,在EJB中使用预定义的Java类,例如在MDB中内部生成和处理线程的Executor,是否非法?
使用消息驱动的Bean时,在注释@MessageDriven(mappedName = "someDestinationName")中硬编码了接收消息的目标名称。 是否有一种方法在运行时添加此信息?下面是一个示例消息驱动的Bean类。 package mdb.beans; import ...
我有一个需求,需要以某种方式处理JMS消息(通过MDB),使属于特定组的消息(设置了组ID)由同一Bean实例消耗。我需要的行为是,具有相同组ID的消息按顺序处理(尽管消息排序是无关紧要的),将它们绑定到同一MDB实例应该提供这个功能。 这些消息不携带任何类型的序列号(因为这是无关紧要的),...