blob: b76f97357860b523d0c1dae25d6220f4ec5c15cd [file] [log] [blame]
<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-1.10.0 plugin-docs plugin-id-default docs-doc-id-sdk/dataproxy-sdk/java">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v2.3.1">
<title data-rh="true">Java SDK | Apache InLong</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://inlong.apache.org/docs/1.10.0/sdk/dataproxy-sdk/java"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="1.10.0"><meta data-rh="true" name="docusaurus_tag" content="docs-default-1.10.0"><meta data-rh="true" name="docsearch:version" content="1.10.0"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-1.10.0"><meta data-rh="true" property="og:title" content="Java SDK | Apache InLong"><meta data-rh="true" name="description" content="Create real-time synchronization task"><meta data-rh="true" property="og:description" content="Create real-time synchronization task"><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://inlong.apache.org/docs/1.10.0/sdk/dataproxy-sdk/java"><link data-rh="true" rel="alternate" href="https://inlong.apache.org/docs/1.10.0/sdk/dataproxy-sdk/java" hreflang="en"><link data-rh="true" rel="alternate" href="https://inlong.apache.org/zh-CN/docs/1.10.0/sdk/dataproxy-sdk/java" hreflang="zh-CN"><link data-rh="true" rel="alternate" href="https://inlong.apache.org/docs/1.10.0/sdk/dataproxy-sdk/java" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://YUW9QEL53E-dsn.algolia.net" crossorigin="anonymous"><link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache InLong RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache InLong Atom Feed">
<link rel="search" type="application/opensearchdescription+xml" title="Apache InLong" href="/opensearch.xml">
<script src="https://www.apachecon.com/event-images/snippet.js" async></script><link rel="stylesheet" href="/assets/css/styles.c64edd51.css">
<link rel="preload" href="/assets/js/runtime~main.63c98e82.js" as="script">
<link rel="preload" href="/assets/js/main.070aef2a.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function e(e){document.documentElement.setAttribute("data-theme",e)}var t=function(){var e=null;try{e=localStorage.getItem("theme")}catch(e){}return e}();null!==t?e(t):window.matchMedia("(prefers-color-scheme: dark)").matches?e("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,e("light"))}()</script><div id="__docusaurus">
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo.svg" alt="Apache" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo.svg" alt="Apache" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Apache InLong</b></a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__link" aria-haspopup="true" aria-expanded="false" role="button" href="/docs/introduction">Docs</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/introduction">Next</a></li><li><a class="dropdown__link" href="/docs/introduction">1.11.0</a></li><li><a class="dropdown__link" href="/docs/1.10.0/introduction">1.10.0</a></li><li><a class="dropdown__link" href="/docs/1.9.0/introduction">1.9.0</a></li><li><a class="dropdown__link" href="/docs/1.8.0/introduction">1.8.0</a></li><li><a class="dropdown__link" href="/versions/">All versions</a></li></ul></div><a class="navbar__item navbar__link" href="/downloads">Download</a><a class="navbar__item navbar__link" href="/community/how-to-contribute">Community</a><a class="navbar__item navbar__link" href="/blog">Blog</a><a class="navbar__item navbar__link" href="/team">Team</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">ASF</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">License</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li><li><a href="https://www.apache.org/foundation/policies/privacy.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Privacy</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li></ul></div><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link"><svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true" class="iconLanguage_nlXk"><path fill="currentColor" d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"></path></svg>English</a><ul class="dropdown__menu"><li><a href="/docs/1.10.0/sdk/dataproxy-sdk/java" target="_self" rel="noopener noreferrer" class="dropdown__link dropdown__link--active" lang="en">English</a></li><li><a href="/zh-CN/docs/1.10.0/sdk/dataproxy-sdk/java" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="zh-CN">简体中文</a></li></ul></div><a href="https://github.com/apache/inlong" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/1.10.0/introduction">Introduction</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/1.10.0/design_and_concept/basic_concept">Design and Concept</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/1.10.0/quick_start/how_to_build">Quick Start</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/1.10.0/deployment/standalone">Deployment</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/1.10.0/modules/agent/overview">Components</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/1.10.0/data_node/extract_node/overview">Data Nodes</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" href="/docs/1.10.0/sdk/dataproxy-sdk/cpp">SDK</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" tabindex="0" href="/docs/1.10.0/sdk/dataproxy-sdk/cpp">DataProxy SDK</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/1.10.0/sdk/dataproxy-sdk/cpp">C++ SDK</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/1.10.0/sdk/dataproxy-sdk/java">Java SDK</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/1.10.0/sdk/dataproxy-sdk/http">HTTP Report</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/1.10.0/sdk/dataproxy-sdk/go">Golang SDK</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/docs/1.10.0/sdk/manager-sdk/example">Manager SDK</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/docs/1.10.0/sdk/tubemq-sdk/cpp">TubeMQ SDK</a></div></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/1.10.0/user_guide/dashboard_usage">User Guide</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/1.10.0/development/inlong_msg">Development</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/1.10.0/administration/user_management">Administration</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/1.10.0/contact">Contact Us</a></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="theme-doc-version-banner alert alert--warning margin-bottom--md" role="alert"><div>This is documentation for <!-- -->Apache InLong<!-- --> <b>1.10.0</b>, which is no longer actively maintained.</div><div class="margin-top--md">For up-to-date documentation, see the <b><a href="/docs/sdk/dataproxy-sdk/java">latest version</a></b> (<!-- -->1.11.0<!-- -->).</div></div><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">SDK</span><meta itemprop="position" content="1"></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">DataProxy SDK</span><meta itemprop="position" content="2"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Java SDK</span><meta itemprop="position" content="3"></li></ul></nav><span class="theme-doc-version-badge badge badge--secondary">Version: 1.10.0</span><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Java SDK</h1></header><h2 class="anchor anchorWithStickyNavbar_LWe7" id="create-real-time-synchronization-task">Create real-time synchronization task<a href="#create-real-time-synchronization-task" class="hash-link" aria-label="Direct link to Create real-time synchronization task" title="Direct link to Create real-time synchronization task"></a></h2><p>Create a task on the Dashboard or through the command line, and use <code>Auto Push</code> (autonomous push) as the data source type.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="import-java-sdk">Import Java SDK<a href="#import-java-sdk" class="hash-link" aria-label="Direct link to Import Java SDK" title="Direct link to Import Java SDK"></a></h2><p>The library of the SDK need to be imported into the project before using the SDK. The library can be obtained in the following two ways:</p><ul><li>Get the source code and compile it yourself and deploy the SDK package to the local warehouse, see <a href="https://inlong.apache.org/docs/next/quick_start/how_to_build/" target="_blank" rel="noopener noreferrer">How to Build</a>.</li><li>Imported through maven dependency like this:<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">&lt;dependency&gt;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> &lt;groupId&gt;org.apache.inlong&lt;/groupId&gt;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> &lt;artifactId&gt;dataproxy-sdk&lt;/artifactId&gt;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> &lt;version&gt;1.10.0-SNAPSHOT&lt;/version&gt;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">&lt;/dependency&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="data-report-process">Data report process<a href="#data-report-process" class="hash-link" aria-label="Direct link to Data report process" title="Direct link to Data report process"></a></h2><p>After import the SDK, you can instantiate a <a href="https://github.com/apache/inlong/blob/master/inlong-sdk/dataproxy-sdk/src/main/java/org/apache/inlong/sdk/dataproxy/MessageSender.java" target="_blank" rel="noopener noreferrer">MessageSender</a> object, call sync(<code>sendMessage()</code>) or async(<code>asyncSendMessage()</code>) interface to report single or multiple(batch) data. see <a href="https://github.com/apache/inlong/blob/master/inlong-sdk/dataproxy-sdk/src/main/java/org/apache/inlong/sdk/dataproxy/example/TcpClientExample.java" target="_blank" rel="noopener noreferrer">Send Demo</a>.
The overall process includes the following three steps:</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="initialize-sdk">Initialize SDK<a href="#initialize-sdk" class="hash-link" aria-label="Direct link to Initialize SDK" title="Direct link to Initialize SDK"></a></h3><p>From the demo code, we can see that the client initialization is mainly done in the <code>getMessageSender()</code> function:</p><div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public DefaultMessageSender getMessageSender(String localIP, String inLongManagerAddr, String inLongManagerPort, String inlongGroupId, boolean isLocalVisit, boolean isReadProxyIPFromLocal, String configBasePath, int msgType) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> ProxyClientConfig dataProxyConfig = null;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> DefaultMessageSender messageSender = null;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> try {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> // Initialize client configuration. &#x27;test&#x27;, &#x27;123456&#x27; is username and password, which need to be replaced according to the environment configuration in actual use.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> dataProxyConfig = new ProxyClientConfig(localIP, isLocalVisit, inLongManagerAddr, Integer.valueOf(inLongManagerPort), inlongGroupId, &quot;test&quot;, &quot;123456&quot;);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> // Set the local save path of the configuration. This setting is optional. By default, the SDK will create a &quot;/.inlong/&quot; directory under the current user&#x27;s working directory to store the configuration.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> if (StringUtils.isNotEmpty(configBasePath)) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> dataProxyConfig.setConfStoreBasePath(configBasePath);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> // Set whether to use the local saved configuration or not. This setting is optional. By default, do not use. </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> dataProxyConfig.setReadProxyIPFromLocal(isReadProxyIPFromLocal);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> // Initialize MessageSender object, if there is an exception, an exception will be thrown.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> messageSender = DefaultMessageSender.generateSenderByClusterId(dataProxyConfig);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> // Set message type to send. This setting is optional. By default, send data in binary format.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> messageSender.setMsgtype(msgType);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> } catch (Exception e) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> logger.error(&quot;getMessageSender has exception e = {}&quot;, e);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> // Return initialization result.</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> return messageSender;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="proxyclientconfig--configuration">ProxyClientConfig configuration<a href="#proxyclientconfig--configuration" class="hash-link" aria-label="Direct link to ProxyClientConfig configuration" title="Direct link to ProxyClientConfig configuration"></a></h3><table><thead><tr><th>parameter name</th><th>Parameter Description</th><th>default value</th></tr></thead><tbody><tr><td>inlongGroupId</td><td>inlongGroupId</td><td>not null</td></tr><tr><td>inlongStreamId</td><td>inlongStreamId</td><td>not null</td></tr><tr><td>username</td><td>username</td><td>not null</td></tr><tr><td>password</td><td>password</td><td>not null</td></tr><tr><td>isLocalVisit</td><td>request inlong manager protocol</td><td>https: false , http: true</td></tr><tr><td>isReadProxyIPFromLocal</td><td>whether to read DataProxy ip from local</td><td>false</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="call-the-send-interface-to-report-data">Call the send interface to report data<a href="#call-the-send-interface-to-report-data" class="hash-link" aria-label="Direct link to Call the send interface to report data" title="Direct link to Call the send interface to report data"></a></h3><p>The SDK data send interface is thread safe, support send single or multiple messages by sync and async two ways. The following demo uses a single sync way to send, and the message does not contain property information:</p><div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">public void sendTcpMessage(DefaultMessageSender sender, String inlongGroupId, String inlongStreamId, String messageBody, long dt) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> SendResult result = null;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> try {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> // Sends a single message in sync mode, and does not contain property information </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> result = sender.sendMessage(messageBody.getBytes(&quot;utf8&quot;), inlongGroupId, inlongStreamId,</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> 0, String.valueOf(dt), 20, TimeUnit.SECONDS);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> } catch (UnsupportedEncodingException e) {</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> e.printStackTrace();</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> }</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> logger.info(&quot;messageSender {}&quot;, result);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>You can also choose different send interfaces to report data according to your business needs. For the details of the interface, please refer to the definition in the <a href="https://github.com/apache/inlong/blob/master/inlong-sdk/dataproxy-sdk/src/main/java/org/apache/inlong/sdk/dataproxy/MessageSender.java" target="_blank" rel="noopener noreferrer">MessageSender</a> interface file, which has a detailed introduction, no additional explanation here. </p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="close-sdk">Close SDK<a href="#close-sdk" class="hash-link" aria-label="Direct link to Close SDK" title="Direct link to Close SDK"></a></h3><p>In Demo, there is no close operation. When in use, we can call the <code>close()</code> function of the MessageSender interface object to stop data reporting.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="warning">Warning<a href="#warning" class="hash-link" aria-label="Direct link to Warning" title="Direct link to Warning"></a></h2><ul><li>The <code>MessageSender</code> interface object is initialized based on the <code>inlongGroupId</code>, so each <code>MessageSender</code> object can be used differently based on the <code>inlongGroupId</code>, and multiple <code>MessageSender</code> objects can be created in the same process.</li><li>The SDK provides three different network interaction ways: TCP, HTTP, and UDP. Examples of these three ways are given in the <a href="https://github.com/apache/inlong/blob/master/inlong-sdk/dataproxy-sdk/src/main/java/org/apache/inlong/sdk/dataproxy/example" target="_blank" rel="noopener noreferrer">example</a> (refer to <code>TcpClientExample.java</code>, <code>HttpClientExample.java</code>, <code>UdpClientExample.java</code>), and the business can be customized according to its own needs to initialize different <code>MessageSender</code> object.</li><li>The SDK contains complex network interactions, <code>MessageSender</code> should be used as a resident object. Avoid frequent initialization and shutdown of <code>MessageSender</code> (frequent initialization and shutdown will have a large resource overhead and will affect the timeliness of data reporting).</li><li>The SDK does not resend the failed message. When using the SDK to report data, if send fails, you need to decide whether to resend according to your own needs.</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="error-code-introduction">Error Code Introduction<a href="#error-code-introduction" class="hash-link" aria-label="Direct link to Error Code Introduction" title="Direct link to Error Code Introduction"></a></h2><p>Common error codes are as follows.</p><table><thead><tr><th>Code</th><th>Explain</th><th>Remarks</th></tr></thead><tbody><tr><td>SendResult.OK</td><td>Successfully sent</td><td></td></tr><tr><td>SendResult.TIMEOUT</td><td>Request response timeout</td><td></td></tr><tr><td>SendResult.CONNECTION_BREAK</td><td>Connection is breaked</td><td></td></tr><tr><td>SendResult.THREAD_INTERRUPT</td><td>Interrupt</td><td></td></tr><tr><td>SendResult.ASYNC_CALLBACK_BUFFER_FULL</td><td>Async callback buffer full</td><td>In this case, generally, it is caused by the speed of production data exceeding the response speed of the server. It is recommended to properly sleep when send to avoid blocking.</td></tr><tr><td>SendResult.NO_CONNECTION</td><td>No available connection</td><td>In this case, it is recommended to increase the number of available connections.</td></tr><tr><td>SendResult.INVALID_DATA</td><td>Invalid data, failed to report data to DataProxy via HTTP</td><td></td></tr><tr><td>SendResult.INVALID_ATTRIBUTES</td><td>The packets sent are incorrect, such as empty packets or packets containing predefined attributes of the system</td><td></td></tr><tr><td>SendResult.UNKOWN_ERROR</td><td>Unknown error</td><td></td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="proxyclientconfig-configuration-introduction">ProxyClientConfig Configuration Introduction<a href="#proxyclientconfig-configuration-introduction" class="hash-link" aria-label="Direct link to ProxyClientConfig Configuration Introduction" title="Direct link to ProxyClientConfig Configuration Introduction"></a></h2><table><thead><tr><th>Parameter</th><th>Explain</th><th>Adjustment Suggestion</th></tr></thead><tbody><tr><td>setAliveConnections(int aliveConnections)</td><td>Set the number of DataProxy connections. Default: 3.</td><td>1) If the amount of data is large or sensitive to delay, increase this parameter appropriately; 2) According to the size of the DataProxy cluster, adjust this parameter appropriately. For example, if the cluster size is 30, this value can be set to 5 ~ 10; 3) Experience value 15 ~ 20.</td></tr><tr><td>setTotalAsyncCallbackSize(int asyncCallbackSize)</td><td>Set the size of SDK internal buffer queue during async send. The buffer is used to store packets that have been sent but have not received an Ack from the dataProxy. When the buffer reaches this threshold, continue to send data, and will receive an ASYNC_CALLBACK_BUFFER_FULL exception. Default: 50000.</td><td>1) Normally, there is no need to adjust this parameter; 2) When the amount of data is very large or the load of DataProxy is high, it can be increased appropriately. Be careful not to be too large, which may cause OOM.</td></tr><tr><td>setConnectTimeoutMillis(long connectTimeoutMillis)</td><td>Set the connection timeout interval. Unit: ms, Default: 40000.</td><td>Set according to the actual environment.</td></tr><tr><td>setRequestTimeoutMillis(long requestTimeoutMillis)</td><td>Set request timeout interval. Unit: ms, Default: 40000.</td><td>Adjust settings as needed.</td></tr><tr><td>setMaxTimeoutCnt(int maxTimeoutCnt)</td><td>Set the number of timeout disconnections of a single DataProxy connection. The SDK will internally count the DataProxy connections that have timed out and have not received an Ack. If the timeout times of a connection reach the value within a short period of time, the SDK automatically disconnects the connection and selects another DataProxy to create a new connection for data reporting. Default value: 3.</td><td>If the size of the DataProxy cluster is small, you can appropriately increase this parameter to avoid frequent disconnection in a short time.</td></tr><tr><td>setManagerConnectionTimeout(int managerConnectionTimeout)</td><td>Set the timeout interval for SDK connection to InLong Manager. Unit: ms, Default: 10000.</td><td>1) When the network environment is not good, the value can be increased appropriately; 2) When the client takes a long time to resolve the domain name, the value can be increased appropriately.</td></tr><tr><td>setManagerSocketTimeout(int managerSocketTimeout)</td><td>Sets the timeout for the SDK to get the DataProxy list from the InLong Manager connection, Unit: ms, Default: 30000.</td><td>When the network environment is not good, the value can be increased appropriately.</td></tr></tbody></table></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/inlong-website/edit/master/versioned_docs/version-1.10.0/sdk/dataproxy-sdk/java.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/1.10.0/sdk/dataproxy-sdk/cpp"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">C++ SDK</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/1.10.0/sdk/dataproxy-sdk/http"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">HTTP Report</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#create-real-time-synchronization-task" class="table-of-contents__link toc-highlight">Create real-time synchronization task</a></li><li><a href="#import-java-sdk" class="table-of-contents__link toc-highlight">Import Java SDK</a></li><li><a href="#data-report-process" class="table-of-contents__link toc-highlight">Data report process</a><ul><li><a href="#initialize-sdk" class="table-of-contents__link toc-highlight">Initialize SDK</a></li><li><a href="#proxyclientconfig--configuration" class="table-of-contents__link toc-highlight">ProxyClientConfig configuration</a></li><li><a href="#call-the-send-interface-to-report-data" class="table-of-contents__link toc-highlight">Call the send interface to report data</a></li><li><a href="#close-sdk" class="table-of-contents__link toc-highlight">Close SDK</a></li></ul></li><li><a href="#warning" class="table-of-contents__link toc-highlight">Warning</a></li><li><a href="#error-code-introduction" class="table-of-contents__link toc-highlight">Error Code Introduction</a></li><li><a href="#proxyclientconfig-configuration-introduction" class="table-of-contents__link toc-highlight">ProxyClientConfig Configuration Introduction</a></li></ul></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Events</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://www.apachecon.com/" target="_blank" rel="noopener noreferrer" class="footer__link-item">ApacheCon<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a class="acevent" data-format="square" data-mode="dark" data-event="random"></a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://twitter.com/ApacheInlong" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://inlong.apache.org/img/apache-inlong-wechat.jpg" target="_blank" rel="noopener noreferrer" class="footer__link-item">WeChat<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="mailto:dev@inlong.apache.org" target="_blank" rel="noopener noreferrer" class="footer__link-item">Email</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/blog">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/inlong" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/img/asf_logo.svg" alt="Apache InLong" class="themedImage_ToTc themedImage--light_HNdA footer__logo"><img src="/img/asf_logo.svg" alt="Apache InLong" class="themedImage_ToTc themedImage--dark_i4oU footer__logo"></div><div class="footer__copyright"><div style="font-family: Avenir-Medium;font-size: 14px;color: #999;">
<div>Copyright © 2020-2024 The Apache Software Foundation. Licensed under the Apache License, Version 2.0.</div>
<div style="margin-top: 20px; padding-top: 20px; border-top: 1px solid #666;line-height: 20px;">The Apache Software Foundation Apache InLong, InLong, Apache, the Apache feather, and the Apache InLong project logo are either registered trademarks or trademarks of the Apache Software Foundation.</div>
</div></div></div></div></footer></div>
<script src="/assets/js/runtime~main.63c98e82.js"></script>
<script src="/assets/js/main.070aef2a.js"></script>
</body>
</html>