Metadata-Version: 2.1
Name: solace-pubsubplus
Version: 1.9.0
Summary: Solace PubSub+ Messaging API for Python.
Home-page: https://docs.solace.com/Solace-PubSub-Messaging-APIs/Python-API/python-home.htm
Author: Solace Corporation
Author-email: info@solace.com
License: Apache 2.0
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Development Status :: 5 - Production/Stable
Classifier: Operating System :: Microsoft :: Windows :: Windows 10
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: License :: OSI Approved :: Apache Software License
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE.txt
License-File: NOTICE.txt

This package contains the Solace PubSub+ Messaging API for Python.

The Solace PubSub+ Messaging API for Python is developed and supported by the Solace Corporation.

The API provides access to Solace PubSub+ Messaging Service, supporting a variety of Message Exchange Patterns.

# Installation

Install the API using pip: ```pip install solace-pubsubplus```

# Dependencies

Solace PubSub+ Messaging API for Python requires Python 3.6 or greater.

# Documentation

An online reference for the API is available at [docs.solace.com](https://docs.solace.com/Solace-PubSub-Messaging-APIs/Python-API/python-home.htm).

# Introduction

There are four primary objects in the PubSub+ Messaging API for Python that applications can use, which
are as follows:

## MessagingService

```from solace.messaging.messaging_service import MessagingService```
The starting point for all client-broker connections.  `MessagingService` defines and controls the connection to the Solace PubSub+ Event Broker.

A `MessagingService` object is created by the `MessagingServiceBuilder`.

## MessagePublisher
```from solace.messaging.publisher.message_publisher import MessagePublisher```
The abstract base class for a Message Publisher (`MessagePublisher`).  Applications do not build `MessagePublisher` objects directly, rather an application will invoke a builder.
for one of two derived objects:
1. `DirectMessagePublisher`:  Created by a `DirectMessagePublisherBuilder`.  `DirectMessagePublisher` send messages that are not acknowledged and are not stored on the Solace PubSub+ Event Broker. This is the fastest delivery path because messages are never queued and therefore cannot be delivered to offline `MessageReceiver` at a later time.  Messages published by `DirectMessagePublisher` are eligible for discard when network congestion occurs.
2. `PersistentMessagePublisher`:  Created by a `PersistentMessagePublisherBuilder`.  `PersistentMessagePublisher` sends messages that are guaranteed to be delivered to `MessageReceiver`, even if the `MessageReceiver` object is offline. PubSub+ Event Broker stores the messages until they are delivered
    and consumed by all subscribing receivers.

## MessageReceiver
```from solace.messaging.receiver.message_receiver import MessageReceiver```
The abstract base class for a Message Receiver (`Message Receiver`).  Applications do not build `MessageReceiver` objects directly, rather an application will invoke a builder for one of two derived objects:
1. `DirectMessageReceiver`: Created by a `DirectMessageReceiverBuilder`.  `DirectMessgeReceiver` consumes messages as they are published. `DirectMessageReceiver` will not receive messages published before the receiver is created or while the receiver is offline.  `DirectMessageReceiver` is not required to acknowledge received messages.
`DirectMessageReceiver` may receive messages from any publisher (persistent or direct), but only while the `DirectMessageReceiver` is online.
2. `PersistentMessageReceiver`: Created by a `PersistentMessageReceiverBuilder`.  `PersistentMessageReceiver` consume messages from a queue created on the Solace Pubsub+ Event broker.
When the queue is created and subscriptions applied, it will begin storing messages, even if `PersistentMessageReceiver` is offline. Messages are stored until delivered
to the `PersistentMessageReceiver` and the `PersistentMessageReceiver` acknowledges the message. `PersistentMessageReceiver`  is responsible for acknowledging messages received to
remove them from the PubSub+ Event Broker Queue.
## Message
```from solace.messaging.core.message import Message```
The abstract base class for a `Message`.  Applications do not build a `Message` object directly, rather an application will invoke a builder for an `OutboundMessage` (for publish) or
receive an `InboundMessage` (from a `MessageReceiver`).

# Samples

Sample applications are available at the [Solace Developer Community](https://github.com/SolaceSamples/solace-samples-python)

# multiprocessing

Solace PubSub+ Messaging API for Python cannot be used in applications that use the Python multiprocessing module.
