using Apache.NMS;
using Apache.NMS.ActiveMQ;
using Rhea.Common;
using Tiger.Model;
using Tiger.Model.SeaStone.Shelf;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;
using Tiger.Business.WMS.Seastone;
using Tiger.IBusiness;
namespace Tiger.Business.WMS.Transaction
{
///
/// WMS事务基类
///
public abstract class WMSTransactionBase : TransactionBase, IWMSTransaction
{
///
/// WMS事务基类
///
public WMSTransactionBase()
{
//MQTTThread = new Thread(new ThreadStart(MQTT));
//MQTTThread.Start();
//Logger.Console.Info($"Start Transaction MQTT Thread(ID: {TransID}]");
}
///
/// 关闭事务
///
///
///
public override bool Close(bool needSaveHistoryLog = false)
{
return base.Close(needSaveHistoryLog);
}
public override void Dispose()
{
try
{
//MQTTThread?.Abort();
//删除使用的MQTT Topic
//MQTTHelper.DeleteTopic(TransID);
Logger.Console.Info($"Dispose Transaction(ID: {TransID}]");
}
catch (System.Exception ex)
{
Logger.Console.Fatal(ex, $"Dispose Transaction Exception(ID: {TransID}]");
}
base.Dispose();
}
#region WMS业务
///
/// 执行中条码
///
public string ProcessingSn { get; set; }
#endregion
#region MQTT
private Thread MQTTThread;
private void MQTT()
{
try
{
//Create the Connection factory
IConnectionFactory factory = new ConnectionFactory(ApiConfig.Configuration["MQTTService:IPAddress"]);
//Create the connection
using (IConnection connection = factory.CreateConnection())
{
connection.ClientId = $"{Environment.MachineName}-Receive-{TransID}";
connection.Start();
//Create the Session
using (ISession session = connection.CreateSession())
{
//Create the Consumer
IMessageConsumer consumer = session.CreateConsumer(new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic(TransID));
consumer.Listener += new MessageListener(consumer_Listener);
while (!IsFinished)
{
}
}
connection.Stop();
connection.Close();
}
}
catch (System.Exception e)
{
Console.WriteLine(e.Message);
}
}
private string ReceiveMsg;
private void consumer_Listener(IMessage message)
{
try
{
ITextMessage msg = (ITextMessage)message;
Console.WriteLine("MQTT Receive: " + msg.Text);
}
catch (System.Exception e)
{
Console.WriteLine(e.Message);
}
}
#endregion
}
}