@@ -22,14 +22,15 @@ defmodule RabbitMQMessageDeduplication.Queue do
2222
2323 """
2424
25- import Record , only: [ defrecord: 2 , defrecord: 3 , extract: 2 ]
25+ import Record , only: [ defrecord: 2 ]
2626
2727 require RabbitMQMessageDeduplication.Cache
2828 require RabbitMQMessageDeduplication.Common
2929
3030 alias :amqqueue , as: AMQQueue
3131 alias :rabbit_log , as: RabbitLog
3232 alias :rabbit_amqqueue , as: RabbitQueue
33+ alias :mc , as: MC
3334 alias RabbitMQMessageDeduplication.Common , as: Common
3435 alias RabbitMQMessageDeduplication.Cache , as: Cache
3536 alias RabbitMQMessageDeduplication.CacheManager , as: CacheManager
@@ -46,15 +47,6 @@ defmodule RabbitMQMessageDeduplication.Queue do
4647 { :requires , :kernel_ready } ,
4748 { :enables , :core_initialized } ] }
4849
49- defrecord :content , extract (
50- :content , from_lib: "rabbit_common/include/rabbit.hrl" )
51-
52- defrecord :basic_message , extract (
53- :basic_message , from_lib: "rabbit_common/include/rabbit.hrl" )
54-
55- defrecord :basic_properties , :P_basic , extract (
56- :P_basic , from_lib: "rabbit_common/include/rabbit_framing.hrl" )
57-
5850 defrecord :dqack , [ :tag , :header ]
5951 defrecord :dqstate , [ :queue , :queue_state , dedup_enabled: false ]
6052
@@ -286,8 +278,9 @@ defmodule RabbitMQMessageDeduplication.Queue do
286278 if dedup_queue? ( state ) do
287279 case fetch ( need_ack , state ) do
288280 { :empty , state } -> { :empty , state }
289- { { message = basic_message ( id: id ) , _ , ack_tag } , state } ->
281+ { { message , _ , ack_tag } , state } ->
290282 maybe_delete_cache_entry ( queue , message )
283+ id = MC . get_annotation ( :id , message )
291284
292285 { { id , ack_tag } , state }
293286 end
@@ -521,7 +514,7 @@ defmodule RabbitMQMessageDeduplication.Queue do
521514 end
522515
523516 # Returns true if the message is a duplicate.
524- defp duplicate? ( queue , message = basic_message ( ) ) do
517+ defp duplicate? ( queue , message ) do
525518 name = AMQQueue . get_name ( queue )
526519
527520 if Common . duplicate? ( name , message , message_expiration ( message ) ) do
@@ -533,18 +526,14 @@ defmodule RabbitMQMessageDeduplication.Queue do
533526
534527 # Returns the expiration property of the given message
535528 defp message_expiration ( message ) do
536- basic_message ( content: content ( properties: properties ) ) = message
537-
538- case properties do
539- basic_properties ( expiration: ttl ) when is_bitstring ( ttl ) ->
540- String . to_integer ( ttl )
541- basic_properties ( expiration: :undefined ) -> nil
529+ case MC . ttl ( message ) do
542530 :undefined -> nil
531+ ttl -> ttl
543532 end
544533 end
545534
546535 # Removes the message deduplication header from the cache
547- defp maybe_delete_cache_entry ( queue , msg = basic_message ( ) ) do
536+ defp maybe_delete_cache_entry ( queue , msg ) when is_tuple ( msg ) do
548537 header = Common . message_header ( msg , "x-deduplication-header" )
549538 maybe_delete_cache_entry ( queue , header )
550539 end
0 commit comments