welsonjs/lib/msmq.js
2021-09-23 13:59:11 +09:00

61 lines
1.7 KiB
JavaScript

////////////////////////////////////////////////////////////////////////
// MSMQ(Microsoft Message Queuing) API
//
// references:
// - https://gist.github.com/vladaman/6375841
// - https://docs.microsoft.com/en-us/previous-versions/windows/desktop/msmq/ms703952(v=vs.85)
// - https://docs.microsoft.com/en-us/previous-versions/windows/desktop/msmq/ms705286(v=vs.85)
//
////////////////////////////////////////////////////////////////////////
var MSMQObject = function(queueName) {
var MQ_SEND_ACCESS = 2;
var MQ_DENY_NONE = 0;
var MQ_RECEIVE_ACCESS = 1;
var MQ_NO_TRANSACTION = 0;
var MQ_MTS_TRANSACTION = 1;
var MQ_SINGLE_MESSAGE = 3;
this.machineName = "localhost";
this.queueName = queueName;
this.queueInfo = null;
this.queue = null;
this.create = function() {
try {
this.queueInfo = CreateObject("MSMQ.MSMQQueueInfo");
this.queueInfo.PathName = ".\\private$\\" + this.queueName;
} catch (e) {
console.error("MSMQObject.create() ->", e.message);
}
return this;
}
this.open = function() {
this.queue = this.queueInfo.Open(MQ_SEND_ACCESS, MQ_DENY_NONE);
return this;
}
// For example: .send("Sample Body", "LabelXX");
this.send = function(body, label) {
var mqmsg = CreateObject("MSMQ.MSMQMessage");
mqmsg.Body = body
mqmsg.Label = label
mqmsg.Send(this.queue);
return mqmsg;
};
this.recv = function() {
return this.queue.Receive(MQ_NO_TRANSACTION, false, true, 20000, false);
};
this.create();
};
exports.MSMQObject = MSMQObject;
exports.open = function(queueName) {
return (new MSMQObject(queueName)).open();
};