/// <summary> /// the InvokeOperation will be executed periodical to fetch the new ActiveMQ messages /// </summary> /// <param name="operationId"></param> /// <param name="connectionParameters"></param> /// <param name="serviceOperationRequest"></param> /// <returns></returns> public Task <ServiceOperationResponse> InvokeOperation(string operationId, InsensitiveDictionary <JToken> connectionParameters, ServiceOperationRequest serviceOperationRequest) { try { ServiceOpertionsProviderValidation.OperationId(operationId); ActiveMQTriggerParameters activeMQTriggerParameters = new ActiveMQTriggerParameters(connectionParameters, serviceOperationRequest); var connectionFactory = new NmsConnectionFactory(activeMQTriggerParameters.UserName, activeMQTriggerParameters.Password, activeMQTriggerParameters.BrokerUri); using (var connection = connectionFactory.CreateConnection()) { connection.ClientId = activeMQTriggerParameters.ClientId; using (var session = connection.CreateSession(AcknowledgementMode.Transactional)) { using (var queue = session.GetQueue(activeMQTriggerParameters.QueueName)) { using (var consumer = session.CreateConsumer(queue)) { connection.Start(); List <JObject> receiveMessages = new List <JObject>(); for (int i = 0; i < activeMQTriggerParameters.MaximumNumber; i++) { var message = consumer.Receive(messageReceiveTimeout) as ITextMessage; if (message != null) { receiveMessages.Add(new JObject { { "contentData", message.Text }, { "Properties", new JObject { { "NMSMessageId", message.NMSMessageId } } }, }); } else { //Will exit the loop if there are no message break; } } session.Commit(); session.Close(); connection.Close(); if (receiveMessages.Count == 0) { return(Task.FromResult((ServiceOperationResponse) new ActiveMQTriggerResponse(JObject.FromObject(new { message = "No messages" }), System.Net.HttpStatusCode.Accepted))); } else { return(Task.FromResult((ServiceOperationResponse) new ActiveMQTriggerResponse(JArray.FromObject(receiveMessages), System.Net.HttpStatusCode.OK))); } } } } } } catch (Exception e) { var error = e.Message; return(Task.FromResult((ServiceOperationResponse) new ActiveMQTriggerResponse(JObject.FromObject(new { message = error }), System.Net.HttpStatusCode.InternalServerError))); } }
public Task <ServiceOperationResponse> InvokeOperation(string operationId, InsensitiveDictionary <JToken> connectionParameters, ServiceOperationRequest serviceOperationRequest) { //System.IO.File.AppendAllText("c:\\temp\\lalogdll2.txt", $"\r\n({DateTime.Now}) start InvokeOperation "); string Error = ""; try { ServiceOpertionsProviderValidation.OperationId(operationId); triggerPramsDto _triggerPramsDto = new triggerPramsDto(connectionParameters, serviceOperationRequest); var connectionFactory = new NmsConnectionFactory(_triggerPramsDto.UserName, _triggerPramsDto.Password, _triggerPramsDto.BrokerUri); using (var connection = connectionFactory.CreateConnection()) { connection.ClientId = _triggerPramsDto.ClientId; using (var session = connection.CreateSession(AcknowledgementMode.Transactional)) { using (var queue = session.GetQueue(_triggerPramsDto.QueueName)) { using (var consumer = session.CreateConsumer(queue)) { connection.Start(); List <JObject> receiveMessages = new List <JObject>(); for (int i = 0; i < _triggerPramsDto.MaximumNo; i++) { var message = consumer.Receive(new TimeSpan(0, 0, 0, 1)) as ITextMessage; //System.IO.File.AppendAllText("c:\\temp\\lalogdll2.txt", $"\r\n({DateTime.Now}) message != null {(message != null).ToString()} "); if (message != null) { receiveMessages.Add(new JObject { { "contentData", message.Text }, { "Properties", new JObject { { "NMSMessageId", message.NMSMessageId } } }, }); } else { //the we will exit the loop if there are no message break; } } session.Commit(); session.Close(); connection.Close(); if (receiveMessages.Count == 0) { //System.IO.File.AppendAllText("c:\\temp\\lalogdll2.txt", $"\r\n({DateTime.Now}) Skip { JObject.FromObject(new { message = "No messages"} ) }"); return(Task.FromResult((ServiceOperationResponse) new ActiveMQTriggerResponse(JObject.FromObject(new { message = "No messages" }), System.Net.HttpStatusCode.Accepted))); } else { //System.IO.File.AppendAllText("c:\\temp\\lalogdll2.txt", $"\r\n({DateTime.Now}) Ok {JArray.FromObject(receiveMessages)}"); return(Task.FromResult((ServiceOperationResponse) new ActiveMQTriggerResponse(JArray.FromObject(receiveMessages), System.Net.HttpStatusCode.OK))); } } } } } } catch (Exception e) { Error = e.Message; //System.IO.File.AppendAllText("c:\\temp\\lalogdll2.txt", $"\r\n({DateTime.Now}) error {e.Message}"); } return(Task.FromResult((ServiceOperationResponse) new ActiveMQTriggerResponse(JObject.FromObject(new { message = Error }), System.Net.HttpStatusCode.InternalServerError))); }