Skip to main content

This is a package that includes all AMQP handled messages by the CoSecurity infrastructure

Project description

AMQP Internal Library

PyPI version shields.io
Internal library for exchanging messages between services instantiated in the AWS environment. The base used for the elaboration of the package was the PIKA library developed by the RabbitMQ team.

Installation

To use the library it is necessary to have Python3 installed on the machine and run the following command:

python3 -m pip install cosecurity-amqp-lib

Environment Variables File

  • AMQP_USER user for connecting to RabbitMQ
  • AMQP_PASSWORD password for connecting to RabbitMQ
  • [SERVICE_NAME] service name and respective service queue name, can be more than one
  • AMQP_SOCKET_TIMEOUT socket connect timeout in seconds
  • AMQP_HEARTBEAT AMQP connection heartbeat timeout value for negotiation during connection tuning or callable which is invoked during connection tuning

if it is a local instance:

  • AMQP_HOST host to connect to RabbitMQ, if localhost does not need to fill the port

if the connection is via Amazon MQ:

  • AMQP_BROKER_ID amqp id inside aws
  • AWS_REGION region where amqp is allocated within aws

Consumers

Consumers are instances that monitor a specific queue, and if there is a change in the queue, they perform a certain action.
In this library a consumer can have more than one action/method, called primitive. In addition, each action will still have its default input set. Each method that must be an action must be registered so that it can be triggered if there is a change in the directed queue.
Below is an example of how to create a consumer class:

from typing import Any, Dict
from cosecurity_amqp_lib.consumer import Consumer

class ConsumerExample(Consumer):
    def __init__(self) -> None:
        super().__init__(
            name='example'
        )
        self.register(self.primitive_one)
        self.register(self.primitive_two)
        self.start()
    
    def primitive_one(self, content:Dict[str, Any]) -> None:
        print(content['hello'])
    
    def primitive_two(self, content:Dict[str, Any]) -> None:
        print(content['message'])

Producers

Producers are responsible for producing and/or posting new messages in consumer queues.
In the internal library the producers are called stub, I try their methods defined and typed based on what has already been defined as primitive in their consumer.
Below is an example of how to create a stub inside the library in the stub.py file:

class ExampleStub(Stub):
    def __init__(self):
        super().__init__(
            destination='example'
        )

    def primitive_one(self) -> None:
        self._send(
            primitive='primitive_one',  
            content={
                'hello': 'word'
            }
        )

    def primitive_two(self, message:str) -> None:
        self._send(
            primitive='primitive_two',  
            content={
                'message': message
            }
        )

Now, an example of how to use an already created stub and publish it in the library in Pypi:

from cosecurity_amqp_lib.stub import ExampleStub

example_stub = ExampleStub()
example_stub.primitive_one()
example_stub.primitive_two(message='Hello world!')

Additional arguments for queues

In the creation of the consumers it is possible to pass some additional configurations for the creation of the queue, these configurations can be found on the official RabbitMQ website. Below is a representation of how to pass an additional argument:

class ConsumerExample(Consumer):
    def __init__(self) -> None:
        [...]
        self.start(
            arguments={
                'x-queue-mode': 'lazy'
            }
        )

Example

In the example/simple folder we have a real case example of a stub sending an string to a consumer.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cosecurity-amqp-lib-1.0.22.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cosecurity_amqp_lib-1.0.22-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file cosecurity-amqp-lib-1.0.22.tar.gz.

File metadata

  • Download URL: cosecurity-amqp-lib-1.0.22.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for cosecurity-amqp-lib-1.0.22.tar.gz
Algorithm Hash digest
SHA256 db9744e5fc0563d55f5644abf7ea9be5fc1b84023ce694cd7e7ef117bf5f75c0
MD5 85f311d80b4f580f44b1d64386622382
BLAKE2b-256 d1761bf9b3101a8c33cce0ad64473d74b566ef72c77824c2e0a0d0de896ae7c9

See more details on using hashes here.

File details

Details for the file cosecurity_amqp_lib-1.0.22-py3-none-any.whl.

File metadata

File hashes

Hashes for cosecurity_amqp_lib-1.0.22-py3-none-any.whl
Algorithm Hash digest
SHA256 5d15fef8fce7ffea366d0b5f61d9ece05669af4cdee189f1a9411463ce4a21cb
MD5 4cf84471f78ab93c356232d1a7dcf657
BLAKE2b-256 af6ab6c74280beadf3cd7ea4deb4f4a517cd11edb21f329313147f9b8d6faa90

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page