Skip to content

Commit 04b88a7

Browse files
committed
Refactor AMQP 1.0 outcomes handling in go-amqp
Explicitly handle Rejected, Released, and Modified delivery states in publisher outcomes, failing on them specifically instead of catching all non-Accepted outcomes in a default block. Made-with: Cursor
1 parent c81c6b6 commit 04b88a7

6 files changed

Lines changed: 42 additions & 6 deletions

File tree

go-amqp/emit_log.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,14 @@ func main() {
4040
}
4141
switch res.Outcome.(type) {
4242
case *rmq.StateAccepted:
43+
case *rmq.StateRejected:
44+
log.Fatalf("Message was rejected: %v", res.Outcome)
45+
case *rmq.StateReleased:
46+
log.Fatalf("Message was released: %v", res.Outcome)
47+
case *rmq.StateModified:
48+
log.Fatalf("Message was modified: %v", res.Outcome)
4349
default:
44-
log.Panicf("Unexpected publish outcome: %v", res.Outcome)
50+
log.Fatalf("Unexpected publish outcome: %v", res.Outcome)
4551
}
4652
log.Printf(" [x] Sent %s", body)
4753
}

go-amqp/emit_log_direct.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,14 @@ func main() {
4343
}
4444
switch res.Outcome.(type) {
4545
case *rmq.StateAccepted:
46+
case *rmq.StateRejected:
47+
log.Fatalf("Message was rejected: %v", res.Outcome)
48+
case *rmq.StateReleased:
49+
log.Fatalf("Message was released: %v", res.Outcome)
50+
case *rmq.StateModified:
51+
log.Fatalf("Message was modified: %v", res.Outcome)
4652
default:
47-
log.Panicf("Unexpected publish outcome: %v", res.Outcome)
53+
log.Fatalf("Unexpected publish outcome: %v", res.Outcome)
4854
}
4955
log.Printf(" [x] Sent %s", body)
5056
}

go-amqp/emit_log_topic.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,14 @@ func main() {
4343
}
4444
switch res.Outcome.(type) {
4545
case *rmq.StateAccepted:
46+
case *rmq.StateRejected:
47+
log.Fatalf("Message was rejected: %v", res.Outcome)
48+
case *rmq.StateReleased:
49+
log.Fatalf("Message was released: %v", res.Outcome)
50+
case *rmq.StateModified:
51+
log.Fatalf("Message was modified: %v", res.Outcome)
4652
default:
47-
log.Panicf("Unexpected publish outcome: %v", res.Outcome)
53+
log.Fatalf("Unexpected publish outcome: %v", res.Outcome)
4854
}
4955
log.Printf(" [x] Sent %s", body)
5056
}

go-amqp/new_task.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,14 @@ func main() {
4040
}
4141
switch res.Outcome.(type) {
4242
case *rmq.StateAccepted:
43+
case *rmq.StateRejected:
44+
log.Fatalf("Message was rejected: %v", res.Outcome)
45+
case *rmq.StateReleased:
46+
log.Fatalf("Message was released: %v", res.Outcome)
47+
case *rmq.StateModified:
48+
log.Fatalf("Message was modified: %v", res.Outcome)
4349
default:
44-
log.Panicf("Unexpected publish outcome: %v", res.Outcome)
50+
log.Fatalf("Unexpected publish outcome: %v", res.Outcome)
4551
}
4652
log.Printf(" [x] Sent %s", body)
4753
}

go-amqp/publisher_confirms.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,13 @@ func publish(conn *rmq.AmqpConnection, qName, text string) {
7575
switch res.Outcome.(type) {
7676
case *rmq.StateAccepted:
7777
log.Printf("Confirmed")
78+
case *rmq.StateRejected:
79+
log.Fatalf("Message was rejected: %v", res.Outcome)
80+
case *rmq.StateReleased:
81+
log.Fatalf("Message was released: %v", res.Outcome)
82+
case *rmq.StateModified:
83+
log.Fatalf("Message was modified: %v", res.Outcome)
7884
default:
79-
log.Printf("Unexpected outcome: %v", res.Outcome)
85+
log.Fatalf("Unexpected publish outcome: %v", res.Outcome)
8086
}
8187
}

go-amqp/send.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,14 @@ func main() {
3838
}
3939
switch res.Outcome.(type) {
4040
case *rmq.StateAccepted:
41+
case *rmq.StateRejected:
42+
log.Fatalf("Message was rejected: %v", res.Outcome)
43+
case *rmq.StateReleased:
44+
log.Fatalf("Message was released: %v", res.Outcome)
45+
case *rmq.StateModified:
46+
log.Fatalf("Message was modified: %v", res.Outcome)
4147
default:
42-
log.Panicf("Unexpected publish outcome: %v", res.Outcome)
48+
log.Fatalf("Unexpected publish outcome: %v", res.Outcome)
4349
}
4450
log.Printf(" [x] Sent %s\n", body)
4551
}

0 commit comments

Comments
 (0)