Nenhuma descrição
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

queue_functions.go 2.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package functions
  2. import (
  3. "time"
  4. "git.x2erp.com/qdy/go-base/types"
  5. "git.x2erp.com/qdy/go-db/factory/rabbitmq"
  6. )
  7. // CreateQueue 创建队列
  8. func CreateQueue(rabbitFactory *rabbitmq.RabbitMQFactory, req types.QueueRequest) *types.QueryResult {
  9. // 设置默认值
  10. if req.ChannelName == "" {
  11. req.ChannelName = "default"
  12. }
  13. // 确保通道存在
  14. _, err := rabbitFactory.CreateChannel(req.ChannelName)
  15. if err != nil {
  16. return &types.QueryResult{
  17. Success: false,
  18. Error: "Failed to create channel: " + err.Error(),
  19. Time: time.Now().Format(time.RFC3339),
  20. }
  21. }
  22. // 创建队列
  23. err = rabbitFactory.AddQueue(
  24. req.ChannelName,
  25. req.QueueName,
  26. req.Durable,
  27. req.Exclusive,
  28. req.AutoDelete,
  29. )
  30. if err != nil {
  31. return &types.QueryResult{
  32. Success: false,
  33. Error: "Failed to create queue: " + err.Error(),
  34. Time: time.Now().Format(time.RFC3339),
  35. }
  36. }
  37. return &types.QueryResult{
  38. Success: true,
  39. Message: "Queue created successfully",
  40. Time: time.Now().Format(time.RFC3339),
  41. Data: map[string]interface{}{
  42. "queue_name": req.QueueName,
  43. "durable": req.Durable,
  44. "exclusive": req.Exclusive,
  45. "auto_delete": req.AutoDelete,
  46. "channel": req.ChannelName,
  47. },
  48. }
  49. }
  50. // BindQueue 绑定队列到交换机
  51. func BindQueue(rabbitFactory *rabbitmq.RabbitMQFactory, req types.BindRequest) *types.QueryResult {
  52. // 设置默认值
  53. if req.ChannelName == "" {
  54. req.ChannelName = "default"
  55. }
  56. if req.RoutingKey == "" {
  57. req.RoutingKey = req.QueueName
  58. }
  59. // 绑定队列
  60. err := rabbitFactory.BindQueue(
  61. req.ChannelName,
  62. req.QueueName,
  63. req.ExchangeName,
  64. req.RoutingKey,
  65. )
  66. if err != nil {
  67. return &types.QueryResult{
  68. Success: false,
  69. Error: "Failed to bind queue: " + err.Error(),
  70. Time: time.Now().Format(time.RFC3339),
  71. }
  72. }
  73. return &types.QueryResult{
  74. Success: true,
  75. Message: "Queue bound to exchange successfully",
  76. Time: time.Now().Format(time.RFC3339),
  77. Data: map[string]interface{}{
  78. "queue": req.QueueName,
  79. "exchange": req.ExchangeName,
  80. "routing_key": req.RoutingKey,
  81. "channel": req.ChannelName,
  82. },
  83. }
  84. }