オリジナル:
C#のV端子のRabbitMQでのアプリケーション-メッセージング
オリジナル:
C#のV端子のRabbitMQでのアプリケーション-メッセージング
著作権:彼の同意を得ずに、この記事を再現してはならない、あなたに感謝https://blog.csdn.net/phocus1/article/details/87361905
1.VS2013プロデューサーエンドを作成します
コンソールプログラムを作成する:WIRabbitMQProducer、.NETフレームワークおよび4.6.2に変更(バージョン4.6であることができます)。
次のように、番組制作を書き、NuGetパッケージ、RabbitMQ.Clientを追加します。
class Program
{
static void Main(string[] args)
{
IConnection conn = null;
IModel channel = null;
try
{
ConnectionFactory factory = new ConnectionFactory() { HostName = "127.0.0.1", Port = 5672, UserName = "wiadmin", Password = "wi2019" };
using (conn = factory.CreateConnection())
{
using (channel = conn.CreateModel())
{
string queueName = "mqQueueName1";//队列名称
channel.QueueDeclare(queueName, false, false, false, null);//定义队列
string message = "消息内容201902191355";//消息内容
var properties = channel.CreateBasicProperties();
properties.DeliveryMode = 2;//持久化
for (int i = 0; i < 1900000; i++)
{
string strSendMsg = string.Format("{0}_{1}", message, i);
var body = Encoding.UTF8.GetBytes(strSendMsg);
channel.BasicPublish("", queueName, properties, body);//推送
Console.WriteLine("已生产:{0}", strSendMsg);
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("异常", ex.ToString());
}
finally
{//关闭
conn.Close();
channel.Close();
}
}
}
業績:
消費者側が作成2.VS2013
コンソールプログラムを作成します。WIRabbitMQConsumerを、と.NET Framework 4.6.2を変更します。
次のように、番組制作を書き、NuGetパッケージ、RabbitMQ.Clientを追加します。
public void SubscribeMQ()
{
IConnection conn = null;
IModel channel = null;
int runIndex = 1;
try
{
Console.Write("------启动RabbitMQ监听-------\n\t");
ConnectionFactory factory = new ConnectionFactory() { HostName = "127.0.0.1", Port = 5672, UserName = "wiadmin", Password = "wi2019" };
using (conn = factory.CreateConnection())
{
using (channel = conn.CreateModel())
{
#region 消息响应
string queueName = "mqQueueName1";
var consumer = new QueueingBasicConsumer(channel);
channel.BasicConsume(queueName, false, consumer);
while (true)
{
var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine("已接收:{0},{1}", message, runIndex);
runIndex++;
channel.BasicAck(ea.DeliveryTag, false);
}
#endregion
}
}
}
catch (Exception ex)
{
}
}
業績:
消費は、多くの倍を達成し、処理効率をコミットしながら、複数の消費者の側を実行することができます:
著作権:彼の同意を得ずに、この記事を再現してはならない、あなたに感謝https://blog.csdn.net/phocus1/article/details/87361905
1.VS2013プロデューサーエンドを作成します
コンソールプログラムを作成する:WIRabbitMQProducer、.NETフレームワークおよび4.6.2に変更(バージョン4.6であることができます)。
次のように、番組制作を書き、NuGetパッケージ、RabbitMQ.Clientを追加します。
class Program
{
static void Main(string[] args)
{
IConnection conn = null;
IModel channel = null;
try
{
ConnectionFactory factory = new ConnectionFactory() { HostName = "127.0.0.1", Port = 5672, UserName = "wiadmin", Password = "wi2019" };
using (conn = factory.CreateConnection())
{
using (channel = conn.CreateModel())
{
string queueName = "mqQueueName1";//队列名称
channel.QueueDeclare(queueName, false, false, false, null);//定义队列
string message = "消息内容201902191355";//消息内容
var properties = channel.CreateBasicProperties();
properties.DeliveryMode = 2;//持久化
for (int i = 0; i < 1900000; i++)
{
string strSendMsg = string.Format("{0}_{1}", message, i);
var body = Encoding.UTF8.GetBytes(strSendMsg);
channel.BasicPublish("", queueName, properties, body);//推送
Console.WriteLine("已生产:{0}", strSendMsg);
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("异常", ex.ToString());
}
finally
{//关闭
conn.Close();
channel.Close();
}
}
}
業績:
消費者側が作成2.VS2013
コンソールプログラムを作成します。WIRabbitMQConsumerを、と.NET Framework 4.6.2を変更します。
次のように、番組制作を書き、NuGetパッケージ、RabbitMQ.Clientを追加します。
public void SubscribeMQ()
{
IConnection conn = null;
IModel channel = null;
int runIndex = 1;
try
{
Console.Write("------启动RabbitMQ监听-------\n\t");
ConnectionFactory factory = new ConnectionFactory() { HostName = "127.0.0.1", Port = 5672, UserName = "wiadmin", Password = "wi2019" };
using (conn = factory.CreateConnection())
{
using (channel = conn.CreateModel())
{
#region 消息响应
string queueName = "mqQueueName1";
var consumer = new QueueingBasicConsumer(channel);
channel.BasicConsume(queueName, false, consumer);
while (true)
{
var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine("已接收:{0},{1}", message, runIndex);
runIndex++;
channel.BasicAck(ea.DeliveryTag, false);
}
#endregion
}
}
}
catch (Exception ex)
{
}
}
業績:
消費は、多くの倍を達成し、処理効率をコミットしながら、複数の消費者の側を実行することができます: