将MQ与JMS api一起使用时,如何获得与ibm专有的mq api的openOptions相同的效果?
JMS API 中甚至还有 openOptions 的概念吗?如果是这样,就 API 类/方法而言,等效项是什么?
将MQ与JMS api一起使用时,如何获得与ibm专有的mq api的openOptions相同的效果?
JMS API 中甚至还有 openOptions 的概念吗?如果是这样,就 API 类/方法而言,等效项是什么?
这个简单的例子展示了如何发送一个Message
(使用 JBoss MQ):
final Properties initialContextProperties = new Properties();
initialContextProperties.put("java.naming.factory.initial",
"org.jnp.interfaces.NamingContextFactory");
initialContextProperties.put("java.naming.provider.url",
"jnp://localhost:1099");
//
final InitialContext ic = new InitialContext(initialContextProperties);
final QueueConnectionFactory qcf = (QueueConnectionFactory) ic
.lookup("XAConnectionFactory");
final Queue queue = (Queue) ic.lookup("queue/A");
//
final QueueConnection queueConnection = qcf.createQueueConnection();
final boolean transacted = false;
final QueueSession queueSession = queueConnection.createQueueSession(
transacted, Session.AUTO_ACKNOWLEDGE);
final QueueSender queueSender = queueSession.createSender(queue);
final TextMessage textMessage = queueSession.createTextMessage("Hello");
queueSender.send(textMessage);
所以在不同的阶段/级别上有不同的选择:
InitialContext
)。QueueSession
:已交易,确认。createSender
,createReceiver
时指定用法。createBrowser
QueueSession
你在比较苹果和橘子。是的,两者都是水果,但它们是完全不同的水果。两者之间没有直接的比较。
1) 带有“transacted”和“createSender”的 JMS 会话基本上是带有同步点的开放输出。IE
// Open Options
int oo = MQC.MQOO_OUTPUT + MQC.MQOO_INQUIRE + MQC.MQOO_FAIL_IF_QUIESCING;
// Put Msg Options
MQPutMessageOptions pmo = new MQPutMessageOptions();
pmo.options = MQC.MQPMO_SYNCPOINT + MQC.MQPMO_FAIL_IF_QUIESCING;
2) 带有“createReceiver”(非事务)的 JMS 会话基本上是一个开放输入。IE
int oo = MQC.MQOO_INPUT_AS_Q_DEF + MQC.MQOO_INQUIRE + MQC.MQOO_FAIL_IF_QUIESCING;
// Get Msg Options
MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.options = MQC.MQGMO_FAIL_IF_QUIESCING;