public sealed class JsonSerializer
{
public static byte[] Serialize(object message)
{
return Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(message));
} public static object Deserialize<T>(byte[] bytes)
{
return JsonConvert.DeserializeObject<T>(Encoding.UTF8.GetString(bytes));
}
}
public sealed class BinarySerializer
{
public static byte[] SerializeToBytes(object obj)
{
var formatter = new BinaryFormatter();
using (var stream = new MemoryStream())
{
formatter.Serialize(stream, obj); return StreamUtil.ReadAllBytes(stream);
}
} public static object DeserializeFromBytes(byte[] bytes)
{
var formatter = new BinaryFormatter();
using (var stream = new MemoryStream(bytes))
{
return formatter.Deserialize(stream);
}
}
}
private static bool RawPublishMessage()
{
var exchange = "TestExchangeRouting...";
var routingKey = "rk";
Uri uri = new Uri("amqp://192.168.1.1:1234/");
ConnectionFactory factory = new ConnectionFactory(); factory.UserName = "guest";
factory.Password = "guest";
factory.VirtualHost = "/";
factory.RequestedHeartbeat = ;
factory.Endpoint = new AmqpTcpEndpoint(uri); //创建一个连接
using (IConnection connection = factory.CreateConnection())
{
//创建一个通道
using (IModel channel = connection.CreateModel())
{
//声明一个路由
channel.ExchangeDeclare(exchange, "direct");
var queueOk = channel.QueueDeclare("testQueue", true, false, false, null);
channel.QueueBind(queueOk.QueueName, exchange, routingKey); var model = new Order
{
Id = ,
Title = "工一一个测试Test"
}; //这个才是具体的发送内容 var body = JsonSerializer.Serialize(model); var properties = channel.CreateBasicProperties();
properties.SetPersistent(true);
properties.ContentType = typeof(Order).AssemblyQualifiedName;
properties.ContentEncoding = "JSON"; //写入
channel.BasicPublish(exchange, routingKey, properties, body);
Console.WriteLine("写入成功");
} }
return false;
} private static bool RawGetMessage()
{
var exchange = "TestExchangeRouting...";
var routingKey = "rk";
Uri uri = new Uri("amqp://192.168.1.1:1234/");
ConnectionFactory factory = new ConnectionFactory(); factory.UserName = "guest";
factory.Password = "guest";
factory.VirtualHost = "/";
factory.RequestedHeartbeat = ;
factory.Endpoint = new AmqpTcpEndpoint(uri); //创建一个连接
using (IConnection connection = factory.CreateConnection())
{
//创建一个通道
using (IModel channel = connection.CreateModel())
{
var basicConsumer = new QueueingBasicConsumer(channel);
channel.BasicConsume("testQueue", false, basicConsumer); while (true)
{
try
{
BasicDeliverEventArgs basicDeliverEventArgs ;
basicConsumer.Queue.Dequeue(, out basicDeliverEventArgs);
if (basicDeliverEventArgs == null)
{
break;
} Task.Run(() =>
{
channel.BasicAck(basicDeliverEventArgs.DeliveryTag, false);
}).Wait(); var body = JsonSerializer.Deserialize<Order>(basicDeliverEventArgs.Body);
Console.WriteLine(string.Format("RoutingKey:{0},Body:{1}", basicDeliverEventArgs.RoutingKey,
JsonConvert.SerializeObject(body, Formatting.Indented)));
}
catch (Exception)
{
break;
}
} channel.Close();
}
connection.Close();
} return false;
}
public static byte[] ReadAllBytes(Stream stream)
{ var bytes = new byte[stream.Length]; stream.Seek(, SeekOrigin.Begin); for (var i = ; i < stream.Length; i++)
{
bytes[i] = (byte)stream.ReadByte();
} return bytes;
}

最新文章

  1. SEO:权重如何做到从0到1
  2. phpexcel中文教程-设置表格字体颜色背景样式、数据格式、对齐方式、添加图片、批注、文字块、合并拆分单元格、单元格密码保护
  3. 安卓模拟器&quot;bluestacks&quot;在电脑上的设置.(宽,高)
  4. Android开发学习之LauncherActivity开发启动的列表
  5. java中获得IP地址
  6. android 中使用缓存加载数据
  7. ASP .Net Core 使用 Dapper 轻型ORM框架
  8. 线段树(单点更新and成段更新)
  9. java集合类,HashMap,ArrayList
  10. 详解JSOUP的Select选择器语法
  11. redis 配置文件配置
  12. DAY10 函数的参数
  13. 【Java】-NO.16.EBook.4.Java.1.001-【疯狂Java讲义第3版 李刚】- UML
  14. lua 函数基础
  15. smali 语言语法
  16. troubleshooting-执行导数shell脚本抛异常error=2, No such file or directory
  17. kubernetes pod、service文件yaml模版格式
  18. javaWeb中,文件上传和下载
  19. HDU - 5628:Clarke and math (组合数&amp;线性筛||迪利克雷卷积)
  20. Java、JSP与JavaScript的区别

热门文章

  1. 使用myeclipse自动导入hibernate3的jar包,如何关联hibernate源码的解决办法
  2. __call()和__callStatic()方法
  3. sql如何选取两个数据表中的值
  4. strstr()查找函数,strchr(),strrchr(),stristr()/strpos(),strrpos()查找字符串位置
  5. String/StringBuilder 类 统计字符串中字符出现的次数
  6. 【转】pecl,pear的不同
  7. 算法Sedgewick第四版-第1章基础-1.4 Analysis of Algorithms-001分析步骤
  8. ZROI2018提高day5t1
  9. Netty中的Future
  10. RobotFramework教程使用笔记——robotframwork中文乱码显示问题