rest-solace


Namerest-solace JSON
Version 0.3.0 PyPI version JSON
download
home_pageNone
SummaryREST API library for Solace Message Broker. Publish, Consume, & Manage!!
upload_time2024-07-16 16:37:06
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseapache 2.0
keywords solace rest rest api rest-solace rest_solace rest solace python pythonic
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            rest-solace 
===============

.. image:: https://img.shields.io/badge/dynamic/xml?url=https%3A%2F%2Fpypistats.org%2Fpackages%2Frest-solace&query=substring-after(%2Fhtml%2Fbody%2Fdiv%2Fsection%2Fp%20%2C%20'Downloads%20last%20month%3A')&label=PyPI%20downloads%20last%20month%3A&color=%2332CD32
   :alt: Dynamic XML Badge


**rest-solace** is a rest based python library for Solace Message Broker that allows you to Publish, Consume, & Manage!!

It is written with the intent to be easy to understand, functional, and pythonic.
Input and output parameters for almost every function is always one of int, float, str, bool, list, dict and None; 
making them directly compatible with json data types. 

Note: 
    | Right now the focus of this library is on the 'messaging' mode for solace message VPNs.
    | In the future I plan to add better support for 'gateway' mode as well.
    | This library currently uses SEMPv2 for management and only supports basic/common management functions. You are encouraged to contribute to thr repo if you don't find something you wanted. 

|
| Check it out at `PyPI <https://pypi.org/project/rest-solace/>`_. 
| View the code at `Github <https://github.com/skyler-guha/rest-solace/>`_.
| Read the docs from `Here <https://github.com/skyler-guha/rest-solace/blob/master/docs/index.rst/>`_.

-----------------------------
Getting started with Solace:
-----------------------------
You can find the docs for this library `on this page <https://github.com/skyler-guha/rest-solace/blob/master/docs/index.rst>`_ .

If you are new to solace and confused about the terminology and workflows around it, it is **highly** recommended 
that you read `this <https://github.com/skyler-guha/rest-solace/blob/master/docs/getting_started_with_solace.rst/>`_ document first.
It gives a brief explanation on the different components of solace; and that too within the context of this library.

|

-----------------------------------------------------
Sending messages (for message-VPN in messaging mode):
-----------------------------------------------------

*Creating a publisher object:*
-------------------------------

.. code-block:: python

    from rest_solace import MessagingPublisher

    publish = MessagingPublisher(user_name= "admin", 
                                 password=" admin", 
                                 host= BROKER_IP, 
                                 rest_vpn_port= VPN_PORT #For 'default' VPN it is 9000
                                )


*Publish to a queue and confirm if the message was received by the broker:*
----------------------------------------------------------------------------

.. code-block:: python

    #Synchronous method
    publish.direct_message_to_queue(queue_name= "my_queue",
                                    message= "hello world!!")

    #Asynchronous method
    import asyncio
    coroutine_obj= async_direct_message_to_queue(queue_name= "my_queue",
                                                 message= "hello world!!")
    asyncio.run(coroutine_obj)


*Publish for a topic string and confirm if the message was received by the broker:*
-------------------------------------------------------------------------------------

.. code-block:: python

    #Synchronous method
    publish.direct_message_for_topic(topic_string= "test_topic", 
                                     message= "hello world!!")

    #Asynchronous method
    import asyncio
    coroutine_obj= publish.async_direct_message_for_topic(topic_string= "test_topic", 
                                                          message= "hello world!!")
    asyncio.run(coroutine_obj)


*Publish to a queue and confirm if the message was received by the broker and spooled into the queue:*
-------------------------------------------------------------------------------------------------------

.. code-block:: python

    #Synchronous method
    publish.persistent_message_to_queue(queue_name= "my_queue", 
                                        message= "hello world!!",
                                        request_reply= False)

    #Asynchronous method
    import asyncio
    coroutine_obj= publish.async_persistent_message_to_queue(queue_name= "my_queue", 
                                                             message= "hello world!!",
                                                             request_reply= False)
    asyncio.run(coroutine_obj)


*Publish for a topic string and confirm if the message was received by the broker and spooled into a queue:*
-------------------------------------------------------------------------------------------------------------

.. code-block:: python

    #Synchronous method
    publish.persistent_message_for_topic(topic_string= "test_topic", 
                                         message= "hello world!!",
                                         request_reply= False)

    #Asynchronous method
    import asyncio
    coroutine_obj= publish.async_persistent_message_for_topic(topic_string= "test_topic", 
                                                              message= "hello world!!",
                                                              request_reply= False)
    asyncio.run(coroutine_obj)


*Publish to a queue and confirm if the message was received by a consumer by requesting a reply:*
-----------------------------------------------------------------------------------------------------

.. code-block:: python

    #Synchronous method
    response = publish.persistent_message_to_queue(queue_name= "my_queue", 
                                                   message= "hello world!!",
                                                   request_reply= True)                               
    print(response)

    #Asynchronous method
    import asyncio
    coroutine_obj= publish.async_persistent_message_to_queue(queue_name= "my_queue", 
                                                             message= "hello world!!",
                                                             request_reply= True)
    response= asyncio.run(coroutine_obj)
    print(response)


*Publish for a topic string and confirm if the message was received by a consumer by requesting a reply:*
-----------------------------------------------------------------------------------------------------------

.. code-block:: python

    #Synchronous method
    response = publish.persistent_message_for_topic(topic_string= "test_topic", 
                                                    message= "hello world!!"
                                                    request_reply= True)                           
    print(response)

    #Asynchronous method
    import asyncio
    coroutine_obj= publish.async_persistent_message_for_topic(topic_string= "test_topic", 
                                                              message= "hello world!!"
                                                              request_reply= True)
    response= asyncio.run(coroutine_obj)
    print(response)


*Publish multiple messages in a batch (Asynchronous or Synchronously):*
-----------------------------------------------------------------------------------------------------------

.. code-block:: python

    message_data= [
            {
            "direct_message_to_queue": {
                "queue_name": "queue_rest_consumer",
                "message": "direct_message_to_queue",
                "timeout": 30,
                "throw_exception": false
            }
        },
        {
            "direct_message_for_topic": {
                "topic_string": "my_topic",
                "message": "direct_message_for_topic",
                "timeout": 30,
                "throw_exception": false
            }
        },
        {
            "persistent_message_to_queue": {
                "queue_name": "queue_rest_consumer",
                "message": "persistent_message_to_queue",
                "timeout": 30,
                "throw_exception": false,
                "request_reply": false
            }
        },
        {
            "persistent_message_to_queue": {
                "queue_name": "queue_rest_consumer",
                "message": "persistent_message_to_queue",
                "timeout": 30,
                "throw_exception": false,
                "request_reply": true
            }
        },
        {
            "persistent_message_for_topic": {
                "topic_string": "my_topic",
                "message": "persistent_message_for_topic",
                "timeout": 30,
                "throw_exception": false,
                "request_reply": false
            }
        },
        {
            "persistent_message_for_topic": {
                "topic_string": "my_topic",
                "message": "persistent_message_for_topic",
                "timeout": 30,
                "throw_exception": false,
                "request_reply": true
            }
        }
    ]

    response= publish.send_messages(data= message_data, async_mode= True)
    print(response)

|

-----------------------------------------------
Receiving messages and sending back a response:
-----------------------------------------------
(You can use your own REST server too. The one included with this library is only for simple uses and testing)


*Receive a single message and get the value returned to you:*
-------------------------------------------------------------

.. code-block:: python

    from rest_solace import Consumer

    consumer_obj = Consumer()

    #Receive a single message and get the value returned to you.
    incoming_message = consumer_obj.startConsumer(host= CONSUMER_HOST, 
                                                  port= CONSUMER_PORT, 
                                                  auto_stop= True #Required for single message mode
                                                  )
    print(incoming_message)



*Keep receiving messages and handle them through a callback function:*
-------------------------------------------------------------------------

.. code-block:: python

    from rest_solace import Consumer

    consumer_obj = Consumer()

    def return_uppercase(event:dict, kill_function):
    """Convert request message string to upper case to return as response.
    Stops the consumer server if message is "kill".

    Args:
        event (dict): contains info about the received request.
        kill_function (function): stops the consumer server if you run it.
    Returns:
        str: Returns the incoming message to the publisher in uppercase
    """
    byte_string_content= event["content"][1:-1]
    regular_string_content= byte_string_content.decode("utf-8")
    uppercase_response= str.upper( regular_string_content ) 
    
    if regular_string_content == "kill":
        kill_function()
    
    return uppercase_response

    #You can run this function on a septate thread too if you want.
    consumer_obj.startConsumer(host= CONSUMER_HOST, 
                               port= CONSUMER_PORT,
                               callback_function= return_uppercase, 
                               log= True) 

|

------------------------------------------------------------------
Setting up a message VPN for message broking (in messaging mode):
------------------------------------------------------------------
(This is a bit advance but the library includes lots of utility functions to make initial setup easy)

.. code-block:: python

    from rest_solace import Manager

    manager = Manager(user_name= admin, 
                      password= admin, 
                      host= BROKER_IP, 
                      semp_port= SEMP_PORT) #Default rest management port is 8080

    
    #Creating a custom message VPN 
    #(can automatically apply required VPN configuration for rest based communication).
    manager.create_message_vpn(
        msgVpnName= NEW_VPN_NAME,
        serviceRestIncomingPlainTextListenPort= VPN_PORT, #Assign it an unused port
        serviceRestMode= "messaging" #auto configuration will be influenced by this parameter
    )

    
    #Automatically setting up your Message VPN for rest based communication
    manager.auto_rest_messaging_setup_utility(
        msgVpnName= NEW_VPN_NAME,                   #Existing message VPN
        queueName= 'my_queue',                      #Creates a new queue
        subscriptionTopic="test_topic",             #The topic the queue should subscribe to
        restDeliveryPointName='myRDP',              #New RDP to handle incoming messages
        restConsumerName= 'myConsumer',             #A name for your consumer
        remoteHost= CONSUMER_HOST, 
        remotePort= CONSUMER_PORT
    )

                                              
    #Doing the same setup manually (Shown for comparison)
    manager.update_client_profile(msgVpnName= NEW_VPN_NAME, 
                                  clientProfileName= "default",
                                  allowGuaranteedMsgReceiveEnabled= True,
                                  allowGuaranteedMsgSendEnabled= True)
    manager.update_client_username(msgVpnName= NEW_VPN_NAME, 
                                   clientUsername= "default",
                                   enabled= True)
    manager.create_queue_endpoint(queueName='my_queue', msgVpnName=NEW_VPN_NAME)
    manager.subscribe_to_topic_on_queue(msgVpnName= NEW_VPN_NAME,
                                        subscriptionTopic= "test_topic", 
                                        queueName= 'my_queue')
    manager.create_rest_delivery_point(msgVpnName= NEW_VPN_NAME, 
                                       restDeliveryPointName= 'myRDP', 
                                       clientProfileName= "default")
    manager.specify_rest_consumer(msgVpnName= NEW_VPN_NAME, 
                                  restDeliveryPointName= 'myRDP',
                                  restConsumerName= 'myConsumer',
                                  remoteHost= CONSUMER_HOST,
                                  remotePort= CONSUMER_PORT)
    manager.create_queue_binding(msgVpnName= NEW_VPN_NAME,
                                 restDeliveryPointName= 'myRDP',
                                 queueBindingName= 'my_queue',
                                 postRequestTarget= '/')


    #Turning your RDP off and on again (Useful if solace has trouble connecting to your consumer)
    manager.restart_rest_delivery_point(msgVpnName= NEW_VPN_NAME, restDeliveryPointName= 'myRDP')


|

------------------------------------------------------------------
Future plans:
------------------------------------------------------------------

* Add ability to specify host details separately for each message sending call.
* Adding a fast API + unicorn based consumer server option (Since fastAPI has more stability and better performance even if it has less features).
* Adding support for more management APIs and adding the relevant docs.

..
   _url to get download data: https://pypistats.org/packages/rest-solace

..
    _xpath string to get download data: substring-after(/html/body/div/section/p , 'Downloads last month:')

..
    _Create badge using XML/HTML data at: https://shields.io/badges/dynamic-xml-badge 

    
..
   _Note: Make sure to indent using spaces in the code blocks!

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "rest-solace",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "Skyler Guha <skylerguha@gmail.com>",
    "keywords": "solace, rest, REST API, rest-solace, rest_solace, rest solace, python, pythonic",
    "author": null,
    "author_email": "Skyler Guha <skylerguha@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/df/66/bc9212745a7f98037069254c5e8cf17a67ed7c0889e6ac6a1ac6a15ce109/rest_solace-0.3.0.tar.gz",
    "platform": null,
    "description": "rest-solace \n===============\n\n.. image:: https://img.shields.io/badge/dynamic/xml?url=https%3A%2F%2Fpypistats.org%2Fpackages%2Frest-solace&query=substring-after(%2Fhtml%2Fbody%2Fdiv%2Fsection%2Fp%20%2C%20'Downloads%20last%20month%3A')&label=PyPI%20downloads%20last%20month%3A&color=%2332CD32\n   :alt: Dynamic XML Badge\n\n\n**rest-solace** is a rest based python library for Solace Message Broker that allows you to Publish, Consume, & Manage!!\n\nIt is written with the intent to be easy to understand, functional, and pythonic.\nInput and output parameters for almost every function is always one of int, float, str, bool, list, dict and None; \nmaking them directly compatible with json data types. \n\nNote: \n    | Right now the focus of this library is on the 'messaging' mode for solace message VPNs.\n    | In the future I plan to add better support for 'gateway' mode as well.\n    | This library currently uses SEMPv2 for management and only supports basic/common management functions. You are encouraged to contribute to thr repo if you don't find something you wanted. \n\n|\n| Check it out at `PyPI <https://pypi.org/project/rest-solace/>`_. \n| View the code at `Github <https://github.com/skyler-guha/rest-solace/>`_.\n| Read the docs from `Here <https://github.com/skyler-guha/rest-solace/blob/master/docs/index.rst/>`_.\n\n-----------------------------\nGetting started with Solace:\n-----------------------------\nYou can find the docs for this library `on this page <https://github.com/skyler-guha/rest-solace/blob/master/docs/index.rst>`_ .\n\nIf you are new to solace and confused about the terminology and workflows around it, it is **highly** recommended \nthat you read `this <https://github.com/skyler-guha/rest-solace/blob/master/docs/getting_started_with_solace.rst/>`_ document first.\nIt gives a brief explanation on the different components of solace; and that too within the context of this library.\n\n|\n\n-----------------------------------------------------\nSending messages (for message-VPN in messaging mode):\n-----------------------------------------------------\n\n*Creating a publisher object:*\n-------------------------------\n\n.. code-block:: python\n\n    from rest_solace import MessagingPublisher\n\n    publish = MessagingPublisher(user_name= \"admin\", \n                                 password=\" admin\", \n                                 host= BROKER_IP, \n                                 rest_vpn_port= VPN_PORT #For 'default' VPN it is 9000\n                                )\n\n\n*Publish to a queue and confirm if the message was received by the broker:*\n----------------------------------------------------------------------------\n\n.. code-block:: python\n\n    #Synchronous method\n    publish.direct_message_to_queue(queue_name= \"my_queue\",\n                                    message= \"hello world!!\")\n\n    #Asynchronous method\n    import asyncio\n    coroutine_obj= async_direct_message_to_queue(queue_name= \"my_queue\",\n                                                 message= \"hello world!!\")\n    asyncio.run(coroutine_obj)\n\n\n*Publish for a topic string and confirm if the message was received by the broker:*\n-------------------------------------------------------------------------------------\n\n.. code-block:: python\n\n    #Synchronous method\n    publish.direct_message_for_topic(topic_string= \"test_topic\", \n                                     message= \"hello world!!\")\n\n    #Asynchronous method\n    import asyncio\n    coroutine_obj= publish.async_direct_message_for_topic(topic_string= \"test_topic\", \n                                                          message= \"hello world!!\")\n    asyncio.run(coroutine_obj)\n\n\n*Publish to a queue and confirm if the message was received by the broker and spooled into the queue:*\n-------------------------------------------------------------------------------------------------------\n\n.. code-block:: python\n\n    #Synchronous method\n    publish.persistent_message_to_queue(queue_name= \"my_queue\", \n                                        message= \"hello world!!\",\n                                        request_reply= False)\n\n    #Asynchronous method\n    import asyncio\n    coroutine_obj= publish.async_persistent_message_to_queue(queue_name= \"my_queue\", \n                                                             message= \"hello world!!\",\n                                                             request_reply= False)\n    asyncio.run(coroutine_obj)\n\n\n*Publish for a topic string and confirm if the message was received by the broker and spooled into a queue:*\n-------------------------------------------------------------------------------------------------------------\n\n.. code-block:: python\n\n    #Synchronous method\n    publish.persistent_message_for_topic(topic_string= \"test_topic\", \n                                         message= \"hello world!!\",\n                                         request_reply= False)\n\n    #Asynchronous method\n    import asyncio\n    coroutine_obj= publish.async_persistent_message_for_topic(topic_string= \"test_topic\", \n                                                              message= \"hello world!!\",\n                                                              request_reply= False)\n    asyncio.run(coroutine_obj)\n\n\n*Publish to a queue and confirm if the message was received by a consumer by requesting a reply:*\n-----------------------------------------------------------------------------------------------------\n\n.. code-block:: python\n\n    #Synchronous method\n    response = publish.persistent_message_to_queue(queue_name= \"my_queue\", \n                                                   message= \"hello world!!\",\n                                                   request_reply= True)                               \n    print(response)\n\n    #Asynchronous method\n    import asyncio\n    coroutine_obj= publish.async_persistent_message_to_queue(queue_name= \"my_queue\", \n                                                             message= \"hello world!!\",\n                                                             request_reply= True)\n    response= asyncio.run(coroutine_obj)\n    print(response)\n\n\n*Publish for a topic string and confirm if the message was received by a consumer by requesting a reply:*\n-----------------------------------------------------------------------------------------------------------\n\n.. code-block:: python\n\n    #Synchronous method\n    response = publish.persistent_message_for_topic(topic_string= \"test_topic\", \n                                                    message= \"hello world!!\"\n                                                    request_reply= True)                           \n    print(response)\n\n    #Asynchronous method\n    import asyncio\n    coroutine_obj= publish.async_persistent_message_for_topic(topic_string= \"test_topic\", \n                                                              message= \"hello world!!\"\n                                                              request_reply= True)\n    response= asyncio.run(coroutine_obj)\n    print(response)\n\n\n*Publish multiple messages in a batch (Asynchronous or Synchronously):*\n-----------------------------------------------------------------------------------------------------------\n\n.. code-block:: python\n\n    message_data= [\n            {\n            \"direct_message_to_queue\": {\n                \"queue_name\": \"queue_rest_consumer\",\n                \"message\": \"direct_message_to_queue\",\n                \"timeout\": 30,\n                \"throw_exception\": false\n            }\n        },\n        {\n            \"direct_message_for_topic\": {\n                \"topic_string\": \"my_topic\",\n                \"message\": \"direct_message_for_topic\",\n                \"timeout\": 30,\n                \"throw_exception\": false\n            }\n        },\n        {\n            \"persistent_message_to_queue\": {\n                \"queue_name\": \"queue_rest_consumer\",\n                \"message\": \"persistent_message_to_queue\",\n                \"timeout\": 30,\n                \"throw_exception\": false,\n                \"request_reply\": false\n            }\n        },\n        {\n            \"persistent_message_to_queue\": {\n                \"queue_name\": \"queue_rest_consumer\",\n                \"message\": \"persistent_message_to_queue\",\n                \"timeout\": 30,\n                \"throw_exception\": false,\n                \"request_reply\": true\n            }\n        },\n        {\n            \"persistent_message_for_topic\": {\n                \"topic_string\": \"my_topic\",\n                \"message\": \"persistent_message_for_topic\",\n                \"timeout\": 30,\n                \"throw_exception\": false,\n                \"request_reply\": false\n            }\n        },\n        {\n            \"persistent_message_for_topic\": {\n                \"topic_string\": \"my_topic\",\n                \"message\": \"persistent_message_for_topic\",\n                \"timeout\": 30,\n                \"throw_exception\": false,\n                \"request_reply\": true\n            }\n        }\n    ]\n\n    response= publish.send_messages(data= message_data, async_mode= True)\n    print(response)\n\n|\n\n-----------------------------------------------\nReceiving messages and sending back a response:\n-----------------------------------------------\n(You can use your own REST server too. The one included with this library is only for simple uses and testing)\n\n\n*Receive a single message and get the value returned to you:*\n-------------------------------------------------------------\n\n.. code-block:: python\n\n    from rest_solace import Consumer\n\n    consumer_obj = Consumer()\n\n    #Receive a single message and get the value returned to you.\n    incoming_message = consumer_obj.startConsumer(host= CONSUMER_HOST, \n                                                  port= CONSUMER_PORT, \n                                                  auto_stop= True #Required for single message mode\n                                                  )\n    print(incoming_message)\n\n\n\n*Keep receiving messages and handle them through a callback function:*\n-------------------------------------------------------------------------\n\n.. code-block:: python\n\n    from rest_solace import Consumer\n\n    consumer_obj = Consumer()\n\n    def return_uppercase(event:dict, kill_function):\n    \"\"\"Convert request message string to upper case to return as response.\n    Stops the consumer server if message is \"kill\".\n\n    Args:\n        event (dict): contains info about the received request.\n        kill_function (function): stops the consumer server if you run it.\n    Returns:\n        str: Returns the incoming message to the publisher in uppercase\n    \"\"\"\n    byte_string_content= event[\"content\"][1:-1]\n    regular_string_content= byte_string_content.decode(\"utf-8\")\n    uppercase_response= str.upper( regular_string_content ) \n    \n    if regular_string_content == \"kill\":\n        kill_function()\n    \n    return uppercase_response\n\n    #You can run this function on a septate thread too if you want.\n    consumer_obj.startConsumer(host= CONSUMER_HOST, \n                               port= CONSUMER_PORT,\n                               callback_function= return_uppercase, \n                               log= True) \n\n|\n\n------------------------------------------------------------------\nSetting up a message VPN for message broking (in messaging mode):\n------------------------------------------------------------------\n(This is a bit advance but the library includes lots of utility functions to make initial setup easy)\n\n.. code-block:: python\n\n    from rest_solace import Manager\n\n    manager = Manager(user_name= admin, \n                      password= admin, \n                      host= BROKER_IP, \n                      semp_port= SEMP_PORT) #Default rest management port is 8080\n\n    \n    #Creating a custom message VPN \n    #(can automatically apply required VPN configuration for rest based communication).\n    manager.create_message_vpn(\n        msgVpnName= NEW_VPN_NAME,\n        serviceRestIncomingPlainTextListenPort= VPN_PORT, #Assign it an unused port\n        serviceRestMode= \"messaging\" #auto configuration will be influenced by this parameter\n    )\n\n    \n    #Automatically setting up your Message VPN for rest based communication\n    manager.auto_rest_messaging_setup_utility(\n        msgVpnName= NEW_VPN_NAME,                   #Existing message VPN\n        queueName= 'my_queue',                      #Creates a new queue\n        subscriptionTopic=\"test_topic\",             #The topic the queue should subscribe to\n        restDeliveryPointName='myRDP',              #New RDP to handle incoming messages\n        restConsumerName= 'myConsumer',             #A name for your consumer\n        remoteHost= CONSUMER_HOST, \n        remotePort= CONSUMER_PORT\n    )\n\n                                              \n    #Doing the same setup manually (Shown for comparison)\n    manager.update_client_profile(msgVpnName= NEW_VPN_NAME, \n                                  clientProfileName= \"default\",\n                                  allowGuaranteedMsgReceiveEnabled= True,\n                                  allowGuaranteedMsgSendEnabled= True)\n    manager.update_client_username(msgVpnName= NEW_VPN_NAME, \n                                   clientUsername= \"default\",\n                                   enabled= True)\n    manager.create_queue_endpoint(queueName='my_queue', msgVpnName=NEW_VPN_NAME)\n    manager.subscribe_to_topic_on_queue(msgVpnName= NEW_VPN_NAME,\n                                        subscriptionTopic= \"test_topic\", \n                                        queueName= 'my_queue')\n    manager.create_rest_delivery_point(msgVpnName= NEW_VPN_NAME, \n                                       restDeliveryPointName= 'myRDP', \n                                       clientProfileName= \"default\")\n    manager.specify_rest_consumer(msgVpnName= NEW_VPN_NAME, \n                                  restDeliveryPointName= 'myRDP',\n                                  restConsumerName= 'myConsumer',\n                                  remoteHost= CONSUMER_HOST,\n                                  remotePort= CONSUMER_PORT)\n    manager.create_queue_binding(msgVpnName= NEW_VPN_NAME,\n                                 restDeliveryPointName= 'myRDP',\n                                 queueBindingName= 'my_queue',\n                                 postRequestTarget= '/')\n\n\n    #Turning your RDP off and on again (Useful if solace has trouble connecting to your consumer)\n    manager.restart_rest_delivery_point(msgVpnName= NEW_VPN_NAME, restDeliveryPointName= 'myRDP')\n\n\n|\n\n------------------------------------------------------------------\nFuture plans:\n------------------------------------------------------------------\n\n* Add ability to specify host details separately for each message sending call.\n* Adding a fast API + unicorn based consumer server option (Since fastAPI has more stability and better performance even if it has less features).\n* Adding support for more management APIs and adding the relevant docs.\n\n..\n   _url to get download data: https://pypistats.org/packages/rest-solace\n\n..\n    _xpath string to get download data: substring-after(/html/body/div/section/p , 'Downloads last month:')\n\n..\n    _Create badge using XML/HTML data at: https://shields.io/badges/dynamic-xml-badge \n\n    \n..\n   _Note: Make sure to indent using spaces in the code blocks!\n",
    "bugtrack_url": null,
    "license": "apache 2.0",
    "summary": "REST API library for Solace Message Broker. Publish, Consume, & Manage!!",
    "version": "0.3.0",
    "project_urls": {
        "documentation": "https://github.com/skyler-guha/rest-solace/blob/master/docs/index.rst",
        "pypi": "https://pypi.org/project/rest-solace/",
        "repository": "https://github.com/skyler-guha/rest-solace"
    },
    "split_keywords": [
        "solace",
        " rest",
        " rest api",
        " rest-solace",
        " rest_solace",
        " rest solace",
        " python",
        " pythonic"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "90f326baa4a53951439d7592e068eb3e225b28af4616460801e2caa8fb0049e1",
                "md5": "9ce27504b267ccb0a14956277f1bb30c",
                "sha256": "207628328060c8af145e1ba0faf8ab6933dc95e6ce21f57f55a205ee6751f9c2"
            },
            "downloads": -1,
            "filename": "rest_solace-0.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9ce27504b267ccb0a14956277f1bb30c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 24971,
            "upload_time": "2024-07-16T16:37:04",
            "upload_time_iso_8601": "2024-07-16T16:37:04.032209Z",
            "url": "https://files.pythonhosted.org/packages/90/f3/26baa4a53951439d7592e068eb3e225b28af4616460801e2caa8fb0049e1/rest_solace-0.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "df66bc9212745a7f98037069254c5e8cf17a67ed7c0889e6ac6a1ac6a15ce109",
                "md5": "fb1483e1a7020e63c25340ae00a7af41",
                "sha256": "92d640dcbbd24fa5d01e73d4af64d1958154ba2e9f86486d45fdad2b6e43a826"
            },
            "downloads": -1,
            "filename": "rest_solace-0.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "fb1483e1a7020e63c25340ae00a7af41",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 37181,
            "upload_time": "2024-07-16T16:37:06",
            "upload_time_iso_8601": "2024-07-16T16:37:06.821941Z",
            "url": "https://files.pythonhosted.org/packages/df/66/bc9212745a7f98037069254c5e8cf17a67ed7c0889e6ac6a1ac6a15ce109/rest_solace-0.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-07-16 16:37:06",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "skyler-guha",
    "github_project": "rest-solace",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "rest-solace"
}
        
Elapsed time: 0.26156s