Mule Database connector Cursor Based Pagination
I'm trying to implement cursor based pagination into a Mule application.
My application is to make a call to the database with 100 rows and I want to receive the first 20 with a 'token' to the next 20 until I reach the 100.
I can't find any documentation regarding cursor based pagination on Mule to help me out.
1 answer
-
answered 2022-05-04 13:23
aled
You can use the 'Fetch Size' attribute of the Select operation to specify how many records to fetch at a time from the results of a query. However if you mean to have pagination across requests to your application, which means different executions of the database operation, then you will probably need to use whatever pagination features the SQL dialect of your database provides. There is no 'persistent cursor' that can be reused across flow invocations in the Database connector.
do you know?
how many words do you know
See also questions close to this topic
-
How is Pagination implemented properly in React?
I have a question regarding React and Pagination. I am trying to apply Pageination to my list with DeferredMail but it is throwing me some errors.
Here is my implementation: DeferredEmailsTable:
import React, { Component } from 'react'; import ArrayBasedTable, { TableColumn, TableColumnHeader, TableRow } from "../../../../Components/ArrayBasedTable"; import { Button } from "reactstrap"; import {PagedDeferredEmail} from '../../../../models/Dtos/Email/Deferred/PagedDeferredEmail'; import Helper from '../../../../Common/Helper'; import { DeferredEmail } from '../../../../models/Dtos/Email/Deferred/DeferredEmail'; import moment from 'moment'; import { SelectOption } from '../../../../Components/ArrayBasedSelect'; import Settings from '../../../../Common/Settings'; import Fetcher from "../../../../Common/Fetcher"; import { FetchError } from '../../../../Common/FetchError'; import Toaster from "../../../../Common/Toaster"; import ArrayBasedPagination, { Pageable } from '../../../../Components/ArrayBasedPagination'; require('moment/locale/de.js'); interface DeferredEmailsTableProps { onResendDeferredEmailClicked(deferredEmail: DeferredEmail): void, onDeleteDeferredEmailClicked(deferredEmail: DeferredEmail): void, onResendAllFiltered(deferredEmails: DeferredEmail[]): void, onRefresh(): void, emailTemplateTypeFilter: SelectOption[], errorTypeFilter: SelectOption[], searchText: string } interface DeferredEmailsTableState { deferredEmails: DeferredEmail[], apiLoading: boolean, pageNumber: number, pageable: Pageable, columnHeaders: TableColumnHeader[] } const PAGINATION_URL_ELEMENT = "?size=16&page="; const EMAIL_TEMPLATE_TYPE_URL_ELEMENT = "&emailTemplateTypes="; const ERROR_TYPE_URL_ELEMENT = "&errorTypes="; const SEARCH_URL_ELEMENT = "&search="; export default class DeferredEmailsTable extends Component<DeferredEmailsTableProps, DeferredEmailsTableState> { constructor(props: DeferredEmailsTableProps) { super(props); let columnHeaders: TableColumnHeader[] = [ { content: <>ProfileId</>, width: "10%", textAlign: "center" }, { content: <>Empfänger</>, width: "11%" }, { content: <>Template</>, width: "10%", textAlign: "center" }, { content: <>Platzhalter</>, width: "10%", textAlign: "center" }, { content: <>Erstell Datum</>, width: "9%", textAlign: "center" }, { content: <>Versuche</>, width: "1%", textAlign: "center" }, { content: <>Letzter Versuch</>, width: "9%", textAlign: "center" }, { content: <>Fehlermeldung</>, width: "20%", textAlign: "center" }, { content: <>Fehlertyp</>, width: "10%", textAlign: "center" }, { content: <>Aktionen <Button size="sm" className="float-right" color="primary" onClick={() => this.props.onRefresh()}><i className="fas fa-sync"/></Button></>, width: "10%", textAlign: "center" } ]; this.state = { apiLoading: true, pageNumber: 0, pageable: { totalPages: 0, first: false, last: false, numberOfElements: 0, pageSize: 0, totalElements: 0 }, deferredEmails: [], columnHeaders: columnHeaders }; }; componentDidMount() { this.fetchApiWhithSpinner(); }; fetchApiWhithSpinner = (): void => { this.setState({apiLoading: true}, this.fetchApi); } componentDidUpdate(prevProps: DeferredEmailsTableProps) { if (prevProps.searchText !== this.props.searchText || prevProps.emailTemplateTypeFilter !== this.props.emailTemplateTypeFilter || prevProps.errorTypeFilter !== this.props.errorTypeFilter) { this.updateComponent(); } } createPathToDeferredEmails = (): string => { let path = Settings.API_PATH_DEFERRED_EMAILS + PAGINATION_URL_ELEMENT + this.state.pageNumber; path += this.addToPathFromSelectOptions(this.props.emailTemplateTypeFilter, EMAIL_TEMPLATE_TYPE_URL_ELEMENT); path += this.addToPathFromSelectOptions(this.props.errorTypeFilter, ERROR_TYPE_URL_ELEMENT) this.props.searchText !== "" ? path += SEARCH_URL_ELEMENT + this.props.searchText : path += SEARCH_URL_ELEMENT; return path; } addToPathFromSelectOptions = (selectOptions: SelectOption[], url_element: string): string => { let path: string = ""; if (selectOptions.length > 0) { path += url_element; //eslint-disable-next-line array-callback-return selectOptions.map((option: SelectOption) => { path += option.value + ","; }); path = path.substring(0, path.length - 1); } else { path += url_element; } return path; } updateComponent = (): void => { if(this.props.searchText !== "") { this.setState({ pageNumber: 0 }, this.fetchApi); } else { this.fetchApi(); }; }; fetchApi = () : void => { let path = this.createPathToDeferredEmails(); console.log(path); Fetcher.get(path, {}, Settings.API_URL) .then((response: PagedDeferredEmail) => { let pageable: Pageable = { totalPages: response.totalPages, first: response.first, last: response.last, numberOfElements: response.numberOfElements, pageSize: response.size, totalElements: response.totalElements }; console.log(response); this.setState({apiLoading:false, pageable: pageable, deferredEmails: response.deferredEmails}); }) .catch((error: FetchError) => { Toaster.toastError(error.message); this.setState({apiLoading:false}); }); }; createButton = (color: string, title: string, icon: string, method: any, buttonText?: string, className?: string) => { let text = buttonText !== 'undefined' ? buttonText : ""; return ( <Button className={className} color={color} size="sm" data-toggle="tooltip" data-placement="bottom" title={title} onClick={method}> <i className={icon} /> {text} </Button> ); }; createButtons = (deferredEmail: DeferredEmail) => { return ( <> {this.createButton("primary", "Erneut senden", "fas fa-share", () => this.props.onResendDeferredEmailClicked(Helper.jsonCopy(deferredEmail)))} {this.createButton("danger", "Löschen", "fas fa-trash", () => this.props.onDeleteDeferredEmailClicked(Helper.jsonCopy(deferredEmail)))} </> ); }; createRows = (): TableRow[] => { let rows: TableRow[] = []; // eslint-disable-next-line array-callback-return this.state.deferredEmails.map((deferredEmail: DeferredEmail, index: number) => { let columns: TableColumn[] = [ { value: deferredEmail.profileId, textAlign: "left", enableTooltip: true, tooltipValue: deferredEmail.profileId}, { value: deferredEmail.recipients, textAlign: "left", enableTooltip: true, tooltipValue: deferredEmail.recipients !== undefined ? deferredEmail.recipients.toString() : ""}, { value: deferredEmail.templateType, textAlign: "left", enableTooltip: true, tooltipValue: deferredEmail.templateType}, { value: deferredEmail.placeholderValues !== undefined ? this.mapToString(deferredEmail.placeholderValues) : "", textAlign: "left", enableTooltip: true, tooltipValue: deferredEmail.placeholderValues !== undefined ? this.mapToString(deferredEmail.placeholderValues) : ""}, { value: this.formatDate(deferredEmail.creationDateTime), textAlign: "left", enableTooltip: true, tooltipValue: this.formatDate(deferredEmail.creationDateTime)}, { value: deferredEmail.tryCount, textAlign: "right" }, { value: this.formatDate(deferredEmail.lastTryDateTime), textAlign: "left", enableTooltip: true, tooltipValue: this.formatDate(deferredEmail.lastTryDateTime)}, { value: deferredEmail.errorMessage, textAlign: "left", enableTooltip: true, tooltipValue: deferredEmail.errorMessage}, { value: deferredEmail.errorType, textAlign: "left", enableTooltip: true, tooltipValue: deferredEmail.errorType}, { value: (this.createButtons(deferredEmail)), textAlign: "center" } ]; rows.push({ index: index, columns: columns, tag: deferredEmail }); }); return rows; }; formatDate = (date: Date): string => { return moment(date).format("lll"); } mapToString = (map: Map<string, string>): string => { let placeholders: string[] = []; Object.entries(map).forEach( ([key, value]) => placeholders.push(`${key}: ${value}`)) return placeholders.toString(); } render(): React.ReactNode { return ( <React.Fragment> {this.createButton("primary", "Alle gefilterten erneut versenden", "fas fa-share", () => this.props.onResendAllFiltered(Helper.jsonCopy(this.state.deferredEmails)), "Alle senden", "float-right")} <br/> <br/> <ArrayBasedTable columnHeaders={this.state.columnHeaders} rows={this.createRows()} selectedRowIndex={-1} fixedHeader={true} striped={true} height={"700px"} /> <div className="animated fadeIn"> <ArrayBasedPagination pageable={this.state.pageable} pageNumber={this.state.pageNumber} onNextClicked={this.nextPageClicked} onPrevClicked={this.prevPageClicked} onFirstClicked={this.firstPageClicked} onLastClicked={this.lastPageClicked} onPageChanged={this.changePage}/> </div> </React.Fragment> ); } nextPageClicked = (): void => { this.changePage(this.state.pageNumber + 1); }; prevPageClicked = (): void => { this.changePage(this.state.pageNumber - 1); }; firstPageClicked = (): void => { this.changePage(0); }; lastPageClicked = (): void => { this.changePage(this.state.pageable.totalPages - 1); }; changePage = (pageNumber: number): void => { this.setState({ pageNumber: pageNumber }, this.fetchApi) }; }
PagedDeferredEmail:
import { DeferredEmail } from "./DeferredEmail" export interface PagedDeferredEmail { Pageable: { sort: { sorted: boolean, unsorted: boolean, empty: boolean }, offset: number, pageSize: number, pageNumber: number, unpaged: boolean, paged: boolean }, totalElements: number, last: boolean, totalPages: number, size: number, number: number, sort: { sorted: boolean, unsorted: boolean, empty: boolean }, numberOfElements: number, first: boolean, empty: boolean deferredEmails: DeferredEmail[], }
I have several errors that I cannot fix. Unfortunately I also lack the experience with React. Here are the following errors:
- At the first error the frontend sends a get request to the backend with the path: api/frontend/email/deferred and receives as response a 500 error message. Actually the path should be as follows:
/api/frontend/email/deferred?size=16&page=0&emailTemplateTypes=&errorTypes=&search=
I wonder where exactly it sends the query parameter loose request. When the page loads, the list should already be populated with pagination.
For the second error, I get the following error message: DeferredEmailsTable.tsx:185 Uncaught TypeError: Cannot read properties of undefined (reading 'map') at DeferredEmailsTable.createRows
Again, unfortunately I don't know why any more. Why can't be mapped correctly anymore?
index.js:1446 The above error occurred in the <DeferredEmailsTable> component: in DeferredEmailsTable (at DeferredEmails.tsx:121) in div (at DeferredEmails.tsx:120) in div (created by Col) in Col (at DeferredEmails.tsx:117) in div (created by Row) in Row (at DeferredEmails.tsx:116) in div (created by CardBody) in CardBody (at DeferredEmails.tsx:105) in div (created by Card) in Card (at DeferredEmails.tsx:104) in div (at DeferredEmails.tsx:102) in DeferredEmails (at AuthenticatedLayout.tsx:146) in Route (at AuthenticatedLayout.tsx:145) in Switch (at AuthenticatedLayout.tsx:142) in Suspense (at AuthenticatedLayout.tsx:141) in div (created by Container) in Container (at AuthenticatedLayout.tsx:140) in main (at AuthenticatedLayout.tsx:139) in div (at AuthenticatedLayout.tsx:137) in div (at AuthenticatedLayout.tsx:131) in AuthenticatedLayout (created by Context.Consumer) in withRouter(AuthenticatedLayout) (created by InnerLoadable) in InnerLoadable (created by Context.Consumer) in LoadableWithChunkExtractor (created by Loadable) in Loadable (created by Context.Consumer) in Route (at App.js:55) in Switch (at App.js:48) in Router (created by BrowserRouter) in BrowserRouter (at App.js:47) in div (at App.js:46) in App (at src/index.js:12)
Error 3: here too, I don't understand what this error message means?
Does anyone have solutions how I can solve these problems? Thanks in advance
-
Pagination RTL next and previous arrowsheads are facing in the wrong direction material ui react
related to this issue
https://github.com/mui/material-ui/issues/20193
Pagination Arrow Working on reverse on RTL direction
-
Why do I get Undefined method 'resolveCurrentPage' when trying to create pagination in Laravel?
I'm trying to create a page in laravel, from an array, but I get an undefine in a function (Undefined method 'resolveCurrentPage')
public function paginate($items, $perPage = 10, $page = null) { $page = $page ?: (Paginator::resolveCurrentPage() ?: 1); $total = count($items); $currentpage = $page; $offset = ($currentpage * $perPage) - $perPage ; $itemstoshow = array_slice($items , $offset , $perPage); return new LengthAwarePaginator($itemstoshow ,$total ,$perPage); } public function parsearInfo() { $users = [ ['name' => 'U1', 'designation' => 'Developer'], ['name' => 'U2', 'designation' => 'Developer'], ['name' => 'U3', 'designation' => 'Developer'], ['name' => 'U4', 'designation' => 'Developer'], ['name' => 'U5', 'designation' => 'Developer'], ['name' => 'U6', 'designation' => 'Developer'], ['name' => 'U7', 'designation' => 'Developer'], ['name' => 'U8', 'designation' => 'Developer'], ['name' => 'U9', 'designation' => 'Developer'], ['name' => 'U10', 'designation' => 'Developer'], ['name' => 'U11', 'designation' => 'Developer'], ['name' => 'U12', 'designation' => 'Developer'] ]; $users = $this->paginate($users); return view('visorarchivos.RegistrosPedimentoM3', ['users' => $users]); }
Blade:
<table > <tr> <th>Id</th> <th>Title</th> </tr> @foreach($users as $user) <tr> <td>{{ $user->name }}</td> <td>{{ $user->designation }}</td> </tr> @endforeach </table> {{ $users->links() }}
I've searched the internet and I don't know if I should create that works or it already inherits from the Paginator instance when I call it
-
Mule error "Remote host closed connection. Possible SSL/TLS handshake issue." on HTTP request
I would like to seek for your advice if you have any idea or you have already encountered this issue “SSL/TLS handshake Issue” ?
To give you a summary, we’re getting an error the error below when connecting to Coupa (ERP) through HTTP.
Remote host closed connection. Possible SSL/TLS handshake issue. Check protocols, cipher suites and certificate set up. Use -Djavax.net.debug=ssl for further debugging.
We have several HTTP requests using the same HTTP config, but there’s this only one specific request that gives the said error. Also, this HTTP request works in postman. This occurs only in one Mule environment (UAT Environment). It works fine in our sandbox environment.
We are not sure whether the SSL connection/Handshake is closed on our end or server end.
If ever its on our end, how do we identify the fix for that?
If it’s on the server end, what should be the proof that we need to provide to them to say that the issue is on their end.
-
Mulesoft -- Need to filter array based on another array
We have common values in both the main payload and filter payload, so we have used region and the country as filtred variables and filtered the main payload.
Actual payload:
[
{
"name": "All",
"obj": "All region",
"children": [
{
"name": "hello",
"objname": "APAC",
"region": 110,
"type": "region",
"children": [
{
"name": "india",
"objname": "APAC",
"country": 110,
"type": "region"
},
{
"name": "China",
"objname": "China",
"country": 160,
"type": "region"
}
]
},
{
"name": "hello",
"objname": "Canada",
"region": 11,
"type": "region",
"children": [
{
"name": "Canada",
"objname": "Canada",
"country": 1110,
"type": "region"
}
]
}
]
}
]
...............................................................
use the below array for filter:
[{"country": 10,"region":110},{"country": 10,"region":113}]
-
SFTP On New or Update throws error Pipe close
I'm using the "On New or Update" source of the Mule 4 SFTP Connector, to process files from an SFTP server directory. The process works fine, however while reading the last file the SFTP connector throws an error as shown below and the file remains in directory waiting next schedule time to be picked up and the same thing will happen for the last file of other new set of files.
Any thoughts on how to fix this issue?
ERROR:
11:20:45.315 05/04/2022 Worker-0 [MuleRuntime].uber.27: [sftp-demo-app].prcsACKFiles-Error-SuccessFlow.CPU_INTENSIVE @1648077b ERROR event:c458bc90-cbbd-11ec-85e2-06a565d43154 ******************************************************************************** Message : "org.mule.weave.v2.module.reader.ReaderParsingException: org.mule.runtime.api.exception.MuleRuntimeException - Exception was found trying to retrieve the contents of file /home/messages/file_8ddb7674.json org.mule.runtime.api.exception.MuleRuntimeException: Exception was found trying to retrieve the contents of file /home/messages/file_8ddb7674.json at org.mule.extension.sftp.internal.connection.SftpClient.exception(SftpClient.java:427) at org.mule.extension.sftp.internal.connection.SftpClient.exception(SftpClient.java:423) at org.mule.extension.sftp.internal.connection.SftpClient.getFileContent(SftpClient.java:349) at org.mule.extension.sftp.internal.connection.SftpFileSystem.retrieveFileContent(SftpFileSystem.java:117) at org.mule.extension.sftp.internal.SftpInputStream$SftpFileInputStreamSupplier.getContentInputStream(SftpInputStream.java:111) at org.mule.extension.sftp.internal.SftpInputStream$SftpFileInputStreamSupplier.getContentInputStream(SftpInputStream.java:93) at org.mule.extension.file.common.api.AbstractConnectedFileInputStreamSupplier.getContentInputStream(AbstractConnectedFileInputStreamSupplier.java:81) at org.mule.extension.file.common.api.AbstractFileInputStreamSupplier.get(AbstractFileInputStreamSupplier.java:65) at org.mule.extension.file.common.api.AbstractFileInputStreamSupplier.get(AbstractFileInputStreamSupplier.java:33) at org.mule.extension.file.common.api.stream.LazyStreamSupplier.lambda$new$1(LazyStreamSupplier.java:29) at org.mule.extension.file.common.api.stream.LazyStreamSupplier.get(LazyStreamSupplier.java:42) at org.mule.extension.file.common.api.stream.AbstractNonFinalizableFileInputStream.lambda$createLazyStream$0(AbstractNonFinalizableFileInputStream.java:48) at $java.io.InputStream$$EnhancerByCGLIB$$55e4687e.read(<generated>) at org.apache.commons.io.input.ProxyInputStream.read(ProxyInputStream.java:102) at org.mule.runtime.core.internal.streaming.bytes.AbstractInputStreamBuffer.consumeStream(AbstractInputStreamBuffer.java:111) at com.mulesoft.mule.runtime.core.internal.streaming.bytes.FileStoreInputStreamBuffer.consumeForwardData(FileStoreInputStreamBuffer.java:239) at com.mulesoft.mule.runtime.core.internal.streaming.bytes.FileStoreInputStreamBuffer.consumeForwardData(FileStoreInputStreamBuffer.java:202) at com.mulesoft.mule.runtime.core.internal.streaming.bytes.FileStoreInputStreamBuffer.doGet(FileStoreInputStreamBuffer.java:125) at org.mule.runtime.core.internal.streaming.bytes.AbstractInputStreamBuffer.get(AbstractInputStreamBuffer.java:93) at org.mule.runtime.core.internal.streaming.bytes.BufferedCursorStream.assureDataInLocalBuffer(BufferedCursorStream.java:126) at org.mule.runtime.core.internal.streaming.bytes.BufferedCursorStream.doRead(BufferedCursorStream.java:101) at org.mule.runtime.core.internal.streaming.bytes.AbstractCursorStream.read(AbstractCursorStream.java:124) at org.mule.runtime.core.internal.streaming.bytes.BufferedCursorStream.read(BufferedCursorStream.java:26) at java.io.InputStream.read(InputStream.java:101) at org.mule.runtime.core.internal.streaming.bytes.ManagedCursorStreamDecorator.read(ManagedCursorStreamDecorator.java:96) at org.mule.weave.v2.el.SeekableCursorStream.read(MuleTypedValue.scala:306) at org.mule.weave.v2.module.reader.UTF8StreamSourceReader.handleBOM(SeekableStreamSourceReader.scala:179) at org.mule.weave.v2.module.reader.UTF8StreamSourceReader.readAscii(SeekableStreamSourceReader.scala:163) at org.mule.weave.v2.module.json.reader.JsonTokenizer.$init$(JsonTokenizer.scala:21) at org.mule.weave.v2.module.json.reader.indexed.IndexedJsonTokenizer.<init>(IndexedJsonTokenizer.scala:15) at org.mule.weave.v2.module.json.reader.indexed.IndexedJsonParser.parser(IndexedJsonParser.scala:17) at org.mule.weave.v2.module.json.reader.JsonReader.readValue(JsonReader.scala:40) at org.mule.weave.v2.module.json.reader.JsonReader.doRead(JsonReader.scala:30) at org.mule.weave.v2.module.reader.Reader.read(Reader.scala:35) at org.mule.weave.v2.module.reader.Reader.read$(Reader.scala:33) at org.mule.weave.v2.module.json.reader.JsonReader.read(JsonReader.scala:20) at org.mule.weave.v2.el.MuleTypedValue.value(MuleTypedValue.scala:147) at org.mule.weave.v2.model.values.wrappers.DelegateValue.valueType(DelegateValue.scala:17) at org.mule.weave.v2.model.values.wrappers.DelegateValue.valueType$(DelegateValue.scala:16) at org.mule.weave.v2.el.MuleTypedValue.valueType(MuleTypedValue.scala:177) at org.mule.weave.v2.model.types.ObjectType$.accepts(Type.scala:1068) Caused by: org.mule.extension.sftp.api.SftpConnectionException: Error occurred while trying to connect to host ... 112 more Caused by: org.mule.runtime.api.connection.ConnectionException: at org.mule.extension.sftp.api.SftpConnectionException.<init>(SftpConnectionException.java:38) ... 112 more Caused by: org.mule.runtime.api.connection.ConnectionException: ... 112 more Caused by: 4: at com.jcraft.jsch.ChannelSftp.get(ChannelSftp.java:1540) at com.jcraft.jsch.ChannelSftp.get(ChannelSftp.java:1290) at org.mule.extension.sftp.internal.connection.SftpClient.getFileContent(SftpClient.java:347) ... 110 more Caused by: java.io.IOException: Pipe closed
-
Web service consumer SOAP version is showing error by default
I am trying to configure a SOAP service using web service consumer, as soon as I click on new configuration in the connector configuration, I see SOAP version column is turning into error and when I hover on it, it is showing some tooling related error and when i check my tooling stats in preferences, it shows in running state. My studio version is 7.11.1
Please let me know how to resolve this issue.
-
How to consume SOAP Web Service secured with OAuth in Mule 4
I want to consume a OAuth secured SOAP API in Mule 4. I want to know how can I pass the bearer token in a header.
I tried almost all the things by using transport header and writing as edit inline with key as Authorization and value as Bearer TOKEN_VALUE.
However nothing is working. Let me know how to consume it.
-
Sharepoint Listener is not picking up the files
I have a Sharepoint listener in my flow which looks up for the files in the Sharepoint(on Cloud) folder and the listener is like below
<flow name="listener-flow" doc:id="1a2f1eb3-0d64-45bd-9a61-9faf7b102c0d" maxConcurrency="${sharepoint.maxCouncurrency}"> <sharepoint:created-objects doc:name="On New Objects" doc:id="c87373ee-8251-4f62-ae01-2a4969923d6e" config-ref="Sharepoint_Sharepoint_online" objectType="FILE" path="${sharepoint.listener.path}" recursive="true"> <scheduling-strategy > <fixed-frequency frequency="${sharepoint.listener.polling.frequency}" timeUnit="SECONDS" startDelay="${sharepoint.listener.polling.startDelay}"/> </scheduling-strategy> </sharepoint:created-objects>
And the YAML file is like below
# Sharepoint sharepoint: maxCouncurrency : "2" siteUrl: "https://example.com/sites/D365Admin" ##auth: ##username: "" ##password: "" listener: path: "/sites/D365Admin/NP/SF" polling: frequency: "60" # In seconds startDelay: "30" # In seconds archive: path: "/sites/D365Admin/NP/SF-Archive"
I have set the maxConcurrency on flow as 2 so even multiple files gets dropped at the same time in to the folder only 2 files are processed concurrently. The issue is when I try to drop 4 files in the folder at the same time only 3 was picked up and processed but the other one was still stayed in the folder even after an hour. Is there a setting I should be changing here so all the files are processed and nothing is left in the folder. Any help is greatly appreciated
-
Unable to create a connection (JWT/OAuth) with Google Bigquery connector
I am facing connection issues with Google Bigquery connector version 1.0.0 newly launched by MuleSoft in Mar 2022.
I've created a service account as well as an OAuth web application in Google Cloud Platform(GCP) and used values from the JSON file generated by GCP.
Test Connection is getting failed but the application deployed successfully and when the flow reaches any BigQuery connector operation, error raised! (Please see attached images)
I failed to connect using "JWT Connection" as well as "Oauth2 Connection". Can someone guide how to connect to the Google Bigquery connector? JWT Connection Image OAuth Connection Image