从 .net 核心接收和发送消息到 mqseries 服务器
receving and sending message to mqseries server from .net core
我想连接到具有此信息的 mqseries 服务器
- 队列的名称:"myqueue"
- 连接名称:"myconnectionName"
- 客户端频道:"mychannel"
服务器名称:"myServerName"
我还需要知道队列管理器吗?或者我可以使用 "default" 并且我也收到此错误消息
Unable to load DLL 'mqic32.dll' or one of its dependencies:
The specified module could not be found. (Exception from HRESULT:
0x8007007E)'
static MQQueueManager queueManager;
static MQQueueManager qManager;
static MQQueue queue;
MQMessage queueMessage;
MQGetMessageOptions queueGetMessageOptions;
MQPutMessageOptions queuePutMessageOptions;
static string QueueName;
static void Main(string[] args)
{
Connect();
}
static void Connect()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("AppSettings.json", true, true).Build();
// Read the Mqseries "connection string" from App.config file.
var queueManagerName = builder["queueManagerName"];
var MQChannel = builder["MQChannel"];
var queueName = builder["QueueName"];
string connectionName = builder["ConnectionName"];
MQAccess(queueName, "Default", connectionName, MQChannel);
Console.WriteLine("Connected to MQ Queue Manager");
}
public static void MQAccess(string queueName, string queueManager, string connection, string channel)
{
QueueName = queueName;
qManager = new MQQueueManager(queueManager, channel, connection);
queue = qManager.AccessQueue(QueueName, MQC.MQOO_INPUT_AS_Q_DEF + MQC.MQOO_FAIL_IF_QUIESCING);
}
.NET 核心支持已添加到 MQ v9.1.1 中。正如@JasonE 所说,您只需要使用 MQ .NET 托管模式。
示例代码:
Hashtable properties;
MQQueueManager queueManager = null;
try {
properties = new Hashtable();
properties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED);
properties.Add(MQC.HOST_NAME_PROPERTY, hostName);
properties.Add(MQC.PORT_PROPERTY, port);
properties.Add(MQC.CHANNEL_PROPERTY, channelName);
properties.Add(MQC.USER_ID_PROPERTY, userName);
properties.Add(MQC.PASSWORD_PROPERTY, pwd);
MQQueueManager queueManager = new MQQueueManager(queueManagerName, properties);
}catch(MQException mqex) {
// Console out exception
}
我想连接到具有此信息的 mqseries 服务器
- 队列的名称:"myqueue"
- 连接名称:"myconnectionName"
- 客户端频道:"mychannel"
服务器名称:"myServerName"
我还需要知道队列管理器吗?或者我可以使用 "default" 并且我也收到此错误消息
Unable to load DLL 'mqic32.dll' or one of its dependencies: The specified module could not be found. (Exception from HRESULT: 0x8007007E)'
static MQQueueManager queueManager;
static MQQueueManager qManager;
static MQQueue queue;
MQMessage queueMessage;
MQGetMessageOptions queueGetMessageOptions;
MQPutMessageOptions queuePutMessageOptions;
static string QueueName;
static void Main(string[] args)
{
Connect();
}
static void Connect()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("AppSettings.json", true, true).Build();
// Read the Mqseries "connection string" from App.config file.
var queueManagerName = builder["queueManagerName"];
var MQChannel = builder["MQChannel"];
var queueName = builder["QueueName"];
string connectionName = builder["ConnectionName"];
MQAccess(queueName, "Default", connectionName, MQChannel);
Console.WriteLine("Connected to MQ Queue Manager");
}
public static void MQAccess(string queueName, string queueManager, string connection, string channel)
{
QueueName = queueName;
qManager = new MQQueueManager(queueManager, channel, connection);
queue = qManager.AccessQueue(QueueName, MQC.MQOO_INPUT_AS_Q_DEF + MQC.MQOO_FAIL_IF_QUIESCING);
}
.NET 核心支持已添加到 MQ v9.1.1 中。正如@JasonE 所说,您只需要使用 MQ .NET 托管模式。
示例代码:
Hashtable properties;
MQQueueManager queueManager = null;
try {
properties = new Hashtable();
properties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED);
properties.Add(MQC.HOST_NAME_PROPERTY, hostName);
properties.Add(MQC.PORT_PROPERTY, port);
properties.Add(MQC.CHANNEL_PROPERTY, channelName);
properties.Add(MQC.USER_ID_PROPERTY, userName);
properties.Add(MQC.PASSWORD_PROPERTY, pwd);
MQQueueManager queueManager = new MQQueueManager(queueManagerName, properties);
}catch(MQException mqex) {
// Console out exception
}