feat: add rabbitmq demo

This commit is contained in:
anjoy8 2023-11-26 22:17:09 +08:00
parent 62cdfb3a56
commit 7a07b85b80
3 changed files with 86 additions and 8 deletions

View File

@ -758,7 +758,7 @@
Values控制器
</summary>
</member>
<member name="M:Blog.Core.Controllers.ValuesController.#ctor(Blog.Core.IServices.IBlogArticleServices,AutoMapper.IMapper,Blog.Core.IServices.IAdvertisementServices,Blog.Core.Model.Love,Blog.Core.IServices.IRoleModulePermissionServices,Blog.Core.Common.HttpContextUser.IUser,Blog.Core.IServices.IPasswordLibServices,Blog.Core.Common.Https.HttpPolly.IHttpPollyHelper,Microsoft.Extensions.Options.IOptions{Blog.Core.Common.Option.SeqOptions})">
<member name="M:Blog.Core.Controllers.ValuesController.#ctor(Blog.Core.IServices.IBlogArticleServices,AutoMapper.IMapper,Blog.Core.IServices.IAdvertisementServices,Blog.Core.Model.Love,Blog.Core.IServices.IRoleModulePermissionServices,Blog.Core.Common.HttpContextUser.IUser,Blog.Core.IServices.IPasswordLibServices,Blog.Core.Common.Https.HttpPolly.IHttpPollyHelper,Blog.Core.EventBus.IRabbitMQPersistentConnection,Microsoft.Extensions.Options.IOptions{Blog.Core.Common.Option.SeqOptions})">
<summary>
ValuesController
</summary>
@ -770,8 +770,19 @@
<param name="user"></param>
<param name="passwordLibServices"></param>
<param name="httpPollyHelper"></param>
<param name="persistentConnection"></param>
<param name="seqOptions"></param>
</member>
<member name="M:Blog.Core.Controllers.ValuesController.TestRabbitMqPublish">
<summary>
测试Rabbit消息队列发送
</summary>
</member>
<member name="M:Blog.Core.Controllers.ValuesController.TestRabbitMqSubscribe">
<summary>
测试Rabbit消息队列订阅
</summary>
</member>
<member name="M:Blog.Core.Controllers.ValuesController.TestSqlsugarWithCache">
<summary>
测试SqlSugar二级缓存

View File

@ -14,8 +14,11 @@ using Blog.Core.Model.ViewModels;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System.ComponentModel.DataAnnotations;
using System.Linq.Expressions;
using System.Text;
namespace Blog.Core.Controllers
{
@ -39,6 +42,7 @@ namespace Blog.Core.Controllers
private readonly IPasswordLibServices _passwordLibServices;
readonly IBlogArticleServices _blogArticleServices;
private readonly IHttpPollyHelper _httpPollyHelper;
private readonly IRabbitMQPersistentConnection _persistentConnection;
private readonly SeqOptions _seqOptions;
/// <summary>
@ -52,6 +56,7 @@ namespace Blog.Core.Controllers
/// <param name="user"></param>
/// <param name="passwordLibServices"></param>
/// <param name="httpPollyHelper"></param>
/// <param name="persistentConnection"></param>
/// <param name="seqOptions"></param>
public ValuesController(IBlogArticleServices blogArticleServices
, IMapper mapper
@ -60,6 +65,7 @@ namespace Blog.Core.Controllers
, IRoleModulePermissionServices roleModulePermissionServices
, IUser user, IPasswordLibServices passwordLibServices
, IHttpPollyHelper httpPollyHelper
, IRabbitMQPersistentConnection persistentConnection
, IOptions<SeqOptions> seqOptions)
{
// 测试 Authorize 和 mapper
@ -77,9 +83,69 @@ namespace Blog.Core.Controllers
_blogArticleServices = blogArticleServices;
// httpPolly
_httpPollyHelper = httpPollyHelper;
_persistentConnection = persistentConnection;
_seqOptions = seqOptions.Value;
}
/// <summary>
/// 测试Rabbit消息队列发送
/// </summary>
[HttpGet]
[AllowAnonymous]
public void TestRabbitMqPublish()
{
if (!_persistentConnection.IsConnected)
{
_persistentConnection.TryConnect();
}
using var channel = _persistentConnection.CreateModel();
var message = " < i am a sender! > ";
var body = Encoding.UTF8.GetBytes(message);
var properties = channel.CreateBasicProperties();
channel.BasicPublish(
exchange: "blogcore",
routingKey: "eventName",
mandatory: true,
basicProperties: properties,
body: body);
}
/// <summary>
/// 测试Rabbit消息队列订阅
/// </summary>
[HttpGet]
[AllowAnonymous]
public void TestRabbitMqSubscribe()
{
if (!_persistentConnection.IsConnected)
{
_persistentConnection.TryConnect();
}
string QueueName = "testq";
using var channel = _persistentConnection.CreateModel();
var consumer = new AsyncEventingBasicConsumer(channel);
consumer.Received += new AsyncEventHandler<BasicDeliverEventArgs>(
async (a, b) =>
{
var Headers = b.BasicProperties.Headers;
var msgBody = b.Body.ToArray();
bool Dealresult = await Dealer(b.Exchange, b.RoutingKey, msgBody, Headers);
if (Dealresult) channel.BasicAck(b.DeliveryTag, false);
else channel.BasicNack(b.DeliveryTag, false, true);
}
);
channel.BasicConsume(QueueName, false, consumer);
}
private async Task<bool> Dealer(string exchange, string routingKey, byte[] msgBody, IDictionary<string, object> headers)
{
await Task.CompletedTask;
Console.WriteLine("我是消费者,这里消费了一条信息是:" + Encoding.UTF8.GetString(msgBody));
return true;
}
[HttpGet]
public MessageModel<List<ClaimDto>> MyClaims()
{

View File

@ -23,11 +23,12 @@
"InstanceName": "" //
},
"RabbitMQ": {
"Enabled": false,
"Connection": "118.25.251.13",
"UserName": "",
"Password": "!",
"RetryCount": 3
"Enabled": true,
"Connection": "101.35.125.157",
"UserName": "admin",
"Password": "admin",
"Port": "5672",
"RetryCount": 2
},
"Kafka": {
"Enabled": false,
@ -181,8 +182,8 @@
"Audience": {
"Secret": "sdfsdfsrty45634kkhllghtdgdfss345t678fs", //16+
"SecretFile": "C:\\my-file\\blog.core.audience.secret.txt", //Secret
"Issuer": "Blog.Core",
"Audience": "wr"
"Issuer": "Blog.Core", //
"Audience": "wr" //
},
"Mongo": {
"ConnectionString": "mongodb://nosql.data",