Skip to content

Commit

Permalink
Merge pull request #1315 from ParetoLife/add-delivery-mode-enum
Browse files Browse the repository at this point in the history
Added a DeliveryMode enum to remove magic numbers
  • Loading branch information
michaelklishin committed Jun 8, 2021
2 parents 1baf475 + 6373db1 commit 3f279ce
Show file tree
Hide file tree
Showing 10 changed files with 41 additions and 24 deletions.
2 changes: 1 addition & 1 deletion docs/examples/blocking_delivery_confirmations.rst
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ The following code demonstrates how to turn on delivery confirmations with the B
routing_key='test',
body='Hello World!',
properties=pika.BasicProperties(content_type='text/plain',
delivery_mode=1)):
delivery_mode=pika.DeliveryMode.Transient)):
print('Message publish was confirmed')
except pika.exceptions.UnroutableError:
print('Message could not be confirmed')
2 changes: 1 addition & 1 deletion docs/examples/blocking_publish_mandatory.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ The following example demonstrates how to check if a message is delivered by set
routing_key='test',
body='Hello World!',
properties=pika.BasicProperties(content_type='text/plain',
delivery_mode=1),
delivery_mode=pika.DeliveryMode.Transient),
mandatory=True)
print('Message was published')
except pika.exceptions.UnroutableError:
Expand Down
4 changes: 2 additions & 2 deletions docs/examples/comparing_publishing_sync_async.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ In the following example, a connection is made to RabbitMQ listening to port *56
'test_routing_key',
'message body value',
pika.BasicProperties(content_type='text/plain',
delivery_mode=1))
delivery_mode=pika.DeliveryMode.Transient))

connection.close()

Expand All @@ -38,7 +38,7 @@ In contrast, using :py:meth:`pika.adapters.select_connection.SelectConnection` a
'test_routing_key',
'message body value',
pika.BasicProperties(content_type='text/plain',
delivery_mode=1))
delivery_mode=pika.DeliveryMode.Transient))

connection.close()

Expand Down
9 changes: 5 additions & 4 deletions examples/confirmation.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

import logging
import pika
from pika import spec
from pika import spec, DeliveryMode

ITERATIONS = 100

Expand All @@ -24,7 +24,8 @@ def on_channel_open(channel):
for _iteration in range(0, ITERATIONS):
channel.basic_publish(
'test', 'test.confirm', 'message body value',
pika.BasicProperties(content_type='text/plain', delivery_mode=1))
pika.BasicProperties(content_type='text/plain',
delivery_mode=DeliveryMode.Transient))
published += 1


Expand All @@ -45,8 +46,8 @@ def on_delivery_confirmation(frame):

parameters = pika.URLParameters(
'amqp://guest:guest@localhost:5672/%2F?connection_attempts=50')
connection = pika.SelectConnection(
parameters=parameters, on_open_callback=on_open)
connection = pika.SelectConnection(parameters=parameters,
on_open_callback=on_open)

try:
connection.ioloop.start()
Expand Down
21 changes: 12 additions & 9 deletions examples/publish.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

import logging
import pika
from pika import DeliveryMode
from pika.exchange_type import ExchangeType

logging.basicConfig(level=logging.DEBUG)
Expand All @@ -11,30 +12,32 @@
parameters = pika.ConnectionParameters('localhost', credentials=credentials)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
channel.exchange_declare(
exchange="test_exchange",
exchange_type=ExchangeType.direct,
passive=False,
durable=True,
auto_delete=False)
channel.exchange_declare(exchange="test_exchange",
exchange_type=ExchangeType.direct,
passive=False,
durable=True,
auto_delete=False)

print("Sending message to create a queue")
channel.basic_publish(
'test_exchange', 'standard_key', 'queue:group',
pika.BasicProperties(content_type='text/plain', delivery_mode=1))
pika.BasicProperties(content_type='text/plain',
delivery_mode=DeliveryMode.Transient))

connection.sleep(5)

print("Sending text message to group")
channel.basic_publish(
'test_exchange', 'group_key', 'Message to group_key',
pika.BasicProperties(content_type='text/plain', delivery_mode=1))
pika.BasicProperties(content_type='text/plain',
delivery_mode=DeliveryMode.Transient))

connection.sleep(5)

print("Sending text message")
channel.basic_publish(
'test_exchange', 'standard_key', 'Message to standard_key',
pika.BasicProperties(content_type='text/plain', delivery_mode=1))
pika.BasicProperties(content_type='text/plain',
delivery_mode=DeliveryMode.Transient))

connection.close()
4 changes: 2 additions & 2 deletions examples/twisted_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
from twisted.internet import reactor

import pika
from pika import spec
from pika import spec, DeliveryMode
from pika.adapters import twisted_connection
from pika.exchange_type import ExchangeType

Expand Down Expand Up @@ -176,7 +176,7 @@ def send_message(self, exchange, routing_key, msg):
exchange_type=ExchangeType.topic,
durable=True,
auto_delete=False)
prop = spec.BasicProperties(delivery_mode=2)
prop = spec.BasicProperties(delivery_mode=DeliveryMode.Persistent)
try:
yield self._channel.basic_publish(
exchange=exchange,
Expand Down
1 change: 1 addition & 0 deletions pika/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from pika.connection import SSLOptions
from pika.credentials import PlainCredentials
from pika.spec import BasicProperties
from pika.delivery_mode import DeliveryMode

from pika import adapters
from pika.adapters import BaseConnection
Expand Down
6 changes: 6 additions & 0 deletions pika/delivery_mode.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from enum import Enum


class DeliveryMode(Enum):
Transient = 1
Persistent = 2
6 changes: 5 additions & 1 deletion pika/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
from pika import data
from pika.compat import str_or_bytes, unicode_type
from pika.exchange_type import ExchangeType
from pika.delivery_mode import DeliveryMode

# Python 3 support for str object
str = bytes
Expand Down Expand Up @@ -2079,7 +2080,10 @@ def __init__(self, content_type=None, content_encoding=None, headers=None, deliv
self.content_type = content_type
self.content_encoding = content_encoding
self.headers = headers
self.delivery_mode = delivery_mode
if isinstance(delivery_mode, DeliveryMode):
self.delivery_mode = delivery_mode.value
else:
self.delivery_mode = delivery_mode
self.priority = priority
self.correlation_id = correlation_id
self.reply_to = reply_to
Expand Down
10 changes: 6 additions & 4 deletions tests/unit/frame_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"""
import unittest

from pika import exceptions, frame, spec
from pika import exceptions, frame, spec, DeliveryMode


class FrameTests(unittest.TestCase):
Expand All @@ -28,7 +28,9 @@ def frame_underscore_marshal_test(self):
self.assertEqual(basic_ack.marshal(), self.BASIC_ACK)

def headers_marshal_test(self):
header = frame.Header(1, 100, spec.BasicProperties(delivery_mode=2))
header = frame.Header(
1, 100,
spec.BasicProperties(delivery_mode=DeliveryMode.Persistent))
self.assertEqual(header.marshal(), self.CONTENT_HEADER)

def body_marshal_test(self):
Expand Down Expand Up @@ -76,8 +78,8 @@ def decode_header_frame_properties_test(self):
self.assertIsInstance(frame_value.properties, spec.BasicProperties)

def decode_frame_decoding_failure_test(self):
self.assertEqual(
frame.decode_frame(b'\x01\x00\x01\x00\x00\xce'), (0, None))
self.assertEqual(frame.decode_frame(b'\x01\x00\x01\x00\x00\xce'),
(0, None))

def decode_frame_decoding_no_end_byte_test(self):
self.assertEqual(frame.decode_frame(self.BASIC_ACK[:-1]), (0, None))
Expand Down

0 comments on commit 3f279ce

Please sign in to comment.