[ 
https://issues.apache.org/jira/browse/QPID-8361?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16933153#comment-16933153
 ] 

ASF GitHub Bot commented on QPID-8361:
--------------------------------------

vavrtom commented on pull request #36: QPID-8361: [Broker-J] Create a developer 
guide for Qpid Broker-J
URL: https://github.com/apache/qpid-broker-j/pull/36#discussion_r326028177
 
 

 ##########
 File path: doc/developer-guide/src/main/markdown/architecture.md
 ##########
 @@ -408,6 +409,45 @@ There are several store provider implementations:
 
 These interfaces are pluggable.
 
+## Messaging Transactions
+
+Multiple messages can be consumed or/and published as a single atomic 
operation within messaging transaction.
+The transaction is usually initiated and discharged (committed or rolled back) 
on client side, but, `Broker`
+can also use messaging transactions for performing operations on group of 
messages in atomic way, for example,
+moving/copying messages between queues, deleting messages from queue using 
management interfaces, etc.
+
+An interface `ServerTransaction` represents messaging transaction on broker 
side. The following operations
+can be invoked as part of messaging transactions:
+
+ * `dequeue` - dequeue message or collection of messages
+ * `enqueue` - enqueue message into a `TransactionLogResource` or collection 
of `BaseQueue`
+ * `commit` - commit transaction
+ * `rollback` - rollback transaction
+ * `addPostTransactionAction` - an auxiliary operation to add some 
post-transactional work, which is executed after
+    transaction is discharged
+
+`LocalTransaction` is a concrete implementation of `ServerTransaction` which 
is responsible for performing messaging
+transaction. It delegates transactional operations to `Transaction` object 
provided by `MesssageStore`. Each message
+store type has its own implementation of `Transaction`.
+
+The class diagram below illustrates the transactional model of Qpid Broker-J.
+
+![Transactions](images/transactions.png)
+
+As per diagram, apart from `LocalTransaction`, there are three other 
implementations of `ServerTransaction`.
+
+ * `DistributedTransaction` is used to run distributed transaction (for AMQP 
protocol 0-10)
+ * `AutoCommitTransaction` is used to model auto-commit transaction 
functionality
+ * `AsyncAutoCommitTransaction` is used to model auto-commit transaction 
functionality
+    with asynchronous discharge (i.e., the caller does not wait for finish of 
transaction discharge and proceed
+    with invocation of next operations, but, the transaction eventually get 
discharged).
+
+`AsyncAutoCommitTransaction` is used to invoke enueueing and dequeueing 
operations when `client`
 
 Review comment:
   Typo in word 'enueueing'
 
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


> [Broker-J] Create a developer guide for Qpid Broker-J
> -----------------------------------------------------
>
>                 Key: QPID-8361
>                 URL: https://issues.apache.org/jira/browse/QPID-8361
>             Project: Qpid
>          Issue Type: Task
>          Components: Broker-J
>            Reporter: Alex Rudyy
>            Priority: Major
>             Fix For: qpid-java-broker-8.0.0
>
>
> The developer documentation is currently scattered over various Qpid 
> confluence pages. It could be challenging for people interested in 
> contributing to the project to find that documentation. A developer guide 
> could be added to cover such aspects as
> * Environment Setup
> * Building project
> * Running tests
> * Releasing
> * Architecture overview
> The following wiki pages are good candidates for inclusion into a developer 
> guide:
> [High Level 
> Architecture|https://cwiki.apache.org/confluence/display/qpid/High+Level+Architecture]
> [How To Build Qpid 
> Broker-J|https://cwiki.apache.org/confluence/display/qpid/How+To+Build+Qpid+Broker-J]
> [Releasing Qpid 
> Broker-J|https://cwiki.apache.org/confluence/display/qpid/Releasing+Qpid+Broker-J]
> The wiki pages below might be included as well
> [Java Coding 
> Standards|https://cwiki.apache.org/confluence/display/qpid/Java+Coding+Standards]
> [Qpid Java Run 
> Scripts|https://cwiki.apache.org/confluence/display/qpid/Qpid+Java+Run+Scripts]
> The developer documentation should be easy to modify, maintain and preview. 
> Thus, it can be written in  markdown or 
> [asciidoc|https://asciidoctor.org/docs/asciidoc-syntax-quick-reference/]. The 
> latter is also supported on github. 
> Potentially, it can be published on Qpid  project site as part of release 
> process.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to