Sev*_*kov 5 transactions xms ibm-mq
通过XMS访问IBM MQ时可以使用TransactionScope吗?我有以下测试代码:
var context =
new InitialContext(
new Hashtable
{
{ "XMSC_IC_URL", "XXX" },
{ "XMSC_IC_SECURITY_AUTHENTICATION", "none" },
});
var connectionFactory = (IConnectionFactory) context.Lookup("XXX");
connectionFactory.SetStringProperty("XMSC_WMQ_CONNECTION_MODE", "5");
connectionFactory.SetStringProperty("XMSC_WMQ_SSL_CIPHER_SPEC", "TRIPLE_DES_SHA_US");
connectionFactory.SetStringProperty("XMSC_WMQ_SSL_KEY_REPOSITORY", "XXX");
try
{
using (var scope = new TransactionScope())
{
using (var connection = connectionFactory.CreateConnection())
{
connection.Start();
using (var session = connection.CreateSession(true, AcknowledgeMode.SessionTransacted))
{
using (var queue = session.CreateQueue(queueName))
{
using (var consumer = session.CreateConsumer(queue))
{
var message = consumer.Receive();
}
}
}
}
throw new Exception();
scope.Complete();
}
}
catch (Exception)
{
}
Run Code Online (Sandbox Code Playgroud)
尽管有异常,它将承诺接收(确认)消息。为什么?如果我注释所有带有作用域的行以及抛出异常的行,则消息将保留在队列中。为什么在失败的情况下使用事务范围来确认消息?
归档时间: |
|
查看次数: |
229 次 |
最近记录: |