using DotNetCore.CAP; using DotNetCore.CAP.Messages; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using System.Threading.Tasks; namespace Samples.Redis.SqlServer.Controllers { [ApiController] [Route("[controller]/[action]")] public class HomeController : ControllerBase { private readonly ILogger _logger; private readonly ICapPublisher _publisher; private readonly IOptions _options; public HomeController(ILogger logger, ICapPublisher publisher, IOptions options) { _logger = logger; _publisher = publisher; this._options = options; } [HttpGet] public async Task Publish([FromQuery] string message = "test-message") { await _publisher.PublishAsync(message, new Person() { Age = 11, Name = "James" }); } [CapSubscribe("test-message")] [CapSubscribe("test-message-1")] [CapSubscribe("test-message-2")] [CapSubscribe("test-message-3")] [NonAction] public void Subscribe(Person p, [FromCap] CapHeader header) { _logger.LogInformation($"{header[Headers.MessageName]} subscribed with value --> " + p); } } public class Person { public string Name { get; set; } public int Age { get; set; } public override string ToString() { return "Name:" + Name + ", Age:" + Age; } } }