using IRaCIS.Core.Application.Helper; using IRaCIS.Core.Domain; using IRaCIS.Core.Domain.Share; using MassTransit; using MassTransit.Mediator; using MassTransit.Scheduling; using Medallion.Threading; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.StaticFiles; using Microsoft.Extensions.Options; using RestSharp; using System; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IRaCIS.Core.Application.MassTransit.Consumer; public class MasstransiTestCommand { public string value { get; set; } } /// /// meditor send 的时候,请求流会先到消费者,返回后才会执行后续代码 /// publish 请求流不会先到消费者,发布后,直接执行后续代码 /// /// /// public class MasstransitTestConsumer(IRepository _userRoleRepository) : IConsumer { public async Task Consume(ConsumeContext context) { Console.WriteLine(_userRoleRepository._dbContext.GetHashCode()); Console.WriteLine("Now is " + DateTime.Now.ToString()); Console.WriteLine($"MassTransit.Consumer :{context.Message.value}"); await context.RespondAsync(ResponseOutput.Ok()); } } [ApiExplorerSettings(GroupName = "Institution")] public class TestMasstransitService : BaseService { public async Task TestMasstransitRequest([FromServices] IMessageScheduler _scheduler, [FromServices] IRecurringMessageScheduler _recurringMessageScheduler, [FromServices] IRepository _testLengthRepository, [FromServices] IRequestClient _requestClient, [FromServices] IScopedClientFactory _clientFactory, [FromServices] IScopedMediator _mediatorScoped, [FromServices] IMediator _mediator) { var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; Console.WriteLine(_testLengthRepository._dbContext.GetHashCode()); //IScopedMediator 上下文一致, IMediator上下文不一致 //通过命令不获取结果 进入消费者后再返回 数据库上下文 不同 //await _mediator.Send(new MasstransiTestCommand { value = "message at " + DateTime.Now.ToString() }); ////通过命令获取结果 进入消费者后再返回 数据库上下文 相同 //var dd = await _mediatorScoped.CreateRequest(new MasstransiTestCommand() { value = "message at " + DateTime.Now.ToString() }) // .GetResponse(); ////发布后,不会立即进入消费者,消费者是另外的线程执行 //await _mediatorScoped.Publish(new MasstransiTestCommand { value = "message at " + DateTime.Now.ToString() }); await _recurringMessageScheduler.ScheduleRecurringPublish(new QCImageQuestionRecurringSchedule() { CronExpression = "0/3 * * * * ? " }, new MasstransiTestCommand { value = "message at " + DateTime.Now.ToString() }); //await _scheduler.SchedulePublish(DateTime.Now.AddSeconds(10), new MasstransiTestCommand() { value = "message at " + DateTime.Now.ToString() }); return ResponseOutput.Ok(); } public async Task TestWordToPdf() { var dd = await FileConvertHelper.ThirdStirling_PDFWordToPdfAsync(@"C:\Users\hang\Desktop\test.docx"); string outputFilePath = @"C:\Users\hang\Desktop\test-byte4-output.pdf"; // 保存路径 File.WriteAllBytes(outputFilePath, dd); // 将响应字节数组写入文件 //var envName = Environment.GetEnvironmentVariables()["ASPNETCORE_ENVIRONMENT"]?.ToString(); //// API 地址 //string apiUrl = "http://106.14.89.110:30088/api/v1/convert/file/pdf"; //// 模拟文件路径,假设你有一个内存流的文件,不指定实际文件 //string filePath = @"C:\Users\hang\Desktop\test.docx"; // 本地文件路径或者你可以直接使用流 //var fileBytes = File.ReadAllBytes(@"C:\Users\hang\Desktop\test.docx"); //try //{ // // 创建 RestClient // var client = new RestClient(apiUrl); // // 创建 RestRequest,使用 POST 方法 // var request = new RestRequest(apiUrl, Method.Post); // request.AddHeader("accept", "*/*"); // //new FileExtensionContentTypeProvider().Mappings.TryGetValue(Path.GetExtension(filePath), out var contentType); // // 直接上传文件,无需生成字节数组 // //request.AddFile("fileInput", filePath, contentType); // // 添加文件流到请求 // request.AddFile("fileInput", fileBytes, "test-byte.docx"); // // 发送请求并获取响应 // var response = await client.ExecuteAsync(request); // // 检查请求是否成功 // if (response.IsSuccessful) // { // // 保存接收到的文件到本地 // string outputFilePath = @"C:\Users\hang\Desktop\test-byte3-output.pdf"; // 保存路径 // File.WriteAllBytes(outputFilePath, response.RawBytes); // 将响应字节数组写入文件 // //如果要文件流,就这样 // //var stream = new MemoryStream(response.RawBytes); // } // else // { // Console.WriteLine($"上传失败,错误代码: {response.StatusCode}, 错误消息: {response.ErrorMessage}"); // } //} //catch (Exception ex) //{ // Console.WriteLine("发生异常: " + ex.Message); //} return ResponseOutput.Ok(); } }