<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Fri Feb 09 00:34:37 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>FOLIO Jira</title>
    <link>https://folio-org.atlassian.net</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>1001.0.0-SNAPSHOT</version>
        <build-number>100246</build-number>
        <build-date>07-02-2024</build-date>
    </build-info>

<item>
            <title>[UXPROD-3764] Switching from PubSub to Direct Kafka approach in Circulation</title>
                <link>https://folio-org.atlassian.net/browse/UXPROD-3764</link>
                <project id="10000" key="UXPROD">UX Product</project>
                    <description>&lt;p&gt;&lt;b&gt;Current situation or problem&lt;/b&gt;:&lt;br/&gt;
There are known PubSub issues based on production experience with PubSub in mod-circulation, mod-feesfines, and mod-patron-blocks, as well as results from mod-pubsub performance testing (it should be noted that this testing was conducted some time ago, and apparently there is no more recent data). PubSub issues are notoriously time-consuming and hard to investigate. Mostly because they are usually invisible to the end user. When an event or a series of events can&apos;t reach the intended subscriber, libraries rarely notice this immediately, but rather when data inconsistencies caused by undelivered events manifest themselves elsewhere.&lt;/p&gt;

&lt;p&gt;Benefits:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Guaranteed delivery provided by Kafka allows addressing reliability concern&lt;/li&gt;
	&lt;li&gt;Improved data consistency since Kafka does not deliver newer messages until older ones are acknowledged&lt;/li&gt;
	&lt;li&gt;Better performance by eliminating the overhead of multiple HTTP calls per event dispatch&lt;/li&gt;
	&lt;li&gt;Enabling good HA since every new Event Consumer instance connects Kafka within a consumer group, so that the load is distributed evenly&lt;/li&gt;
	&lt;li&gt;Improved manageability because of easier investigation capabilities, less data inconsistency, and following fail-fast approach&lt;/li&gt;
	&lt;li&gt;the Pull mechanism provided by the Direct Kafka (as implemented in Data Import) - this implementation places the consumer code in mod-inventory and it will pull message from Kafka when it has capacity&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;b&gt;In scope&lt;/b&gt;&lt;br/&gt;
Refactoring of the following modules:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;mod-circulation&lt;/li&gt;
	&lt;li&gt;mod-feesfines&lt;/li&gt;
	&lt;li&gt;mod-patron-blocks&lt;/li&gt;
	&lt;li&gt;mod-audit&lt;/li&gt;
	&lt;li&gt;mod-remote-storage&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&lt;b&gt;Out of scope&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Use case(s)&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Proposed solution/stories&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Required efforts can be divided into two groups:&lt;br/&gt;
#switching to folio-kafka-wrapper, reusing its capabilities and independently implementing missing functionality (in terms of creating and configuring topics, for example); a small spike-story will help to better understand the size of this group&lt;br/&gt;
#transferring listed above modules to the event-approach (a simpler and more understandable activity, because the essence of the process is the same everywhere)&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Links to additional info&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://wiki.folio.org/display/~Raman+Auramau/Switching+from+PubSub+to+Direct+Kafka+approach+in+Circulation&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://wiki.folio.org/display/~Raman+Auramau/Switching+from+PubSub+to+Direct+Kafka+approach+in+Circulation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;b&gt;Questions&lt;/b&gt;&lt;/p&gt;</description>
                <environment></environment>
        <key id="13313">UXPROD-3764</key>
            <summary>Switching from PubSub to Direct Kafka approach in Circulation</summary>
                <type id="10002" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10322?size=medium">New Feature</type>
                                            <priority id="10005" iconUrl="https://dev.folio.org/assets/jira-priority/tbd.svg">TBD</priority>
                        <status id="10000" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/generic.png" description="(Migrated on 4 Feb 2024 13:41 UTC)">Draft</status>
                    <statusCategory id="2" key="new" colorName="blue-gray"/>
                                    <resolution id="-1">Unresolved</resolution>
                                                        <assignee accountid="-1">Unassigned</assignee>
                                                                <reporter accountid="70121:66f922ee-c57d-4acb-9523-86f6287eae1a">Denis</reporter>
                                    <labels>
                    </labels>
                <created>Mon, 1 Aug 2022 10:28:14 +0000</created>
                <updated>Thu, 8 Feb 2024 00:52:28 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                    <issuelinks>
                            <issuelinktype id="10008">
                    <name>Defines</name>
                                                                <inwardlinks description="is defined by ">
                                        <issuelink>
            <issuekey id="33039">MODPUBSUB-244</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="47009">CIRC-1897</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="73894">MODPATBLK-160</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10007">
                    <name>Requires</name>
                                            <outwardlinks description="requires">
                                        <issuelink>
            <issuekey id="49444">CIRC-1570</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49659">CIRC-1829</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10000" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummarycf">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10057" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Development Team</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10168"><![CDATA[None]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10063" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>PO Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i05634:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10069" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: Cornell (Full Sum 2021)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10214"><![CDATA[R2]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    </customfields>
    </item>
</channel>
</rss>