feat: add support for `MONOLITH_TRANSPORTER` env var (#29373)
Co-authored-by: Debdut Chakraborty <debdut.chakraborty@rocket.chat>pull/29405/head
parent
7f2e27308e
commit
20f5dbc030
@ -0,0 +1,11 @@ |
||||
--- |
||||
'@rocket.chat/meteor': minor |
||||
--- |
||||
|
||||
feat: *Enterprise* Add support for different transporters to connect multiple monolith instances. |
||||
|
||||
To use that, you can use the `TRANSPORTER` env var adding "monolith+" to the transporter value. To use NATS for example, your env var should be: |
||||
|
||||
```bash |
||||
export TRANSPORTER="monolith+nats://localhost:4222" |
||||
``` |
||||
@ -0,0 +1,15 @@ |
||||
export function getTransporter({ transporter, port }: { transporter?: string; port?: string } = {}) { |
||||
if (transporter) { |
||||
if (!transporter.match(/^(?:monolith\+)/)) { |
||||
throw new Error('invalid transporter'); |
||||
} |
||||
|
||||
const [, ...url] = transporter.split('+'); |
||||
return url.join(''); |
||||
} |
||||
|
||||
return { |
||||
port: port ? port.trim() : 0, |
||||
udpDiscovery: false, |
||||
}; |
||||
} |
||||
@ -0,0 +1,25 @@ |
||||
import { expect } from 'chai'; |
||||
|
||||
import { getTransporter } from '../../../../../../../../server/local-services/instance/getTransporter'; |
||||
|
||||
describe('getTransporter', () => { |
||||
it('should return TCP with port 0 by default', () => { |
||||
expect(getTransporter()).to.deep.equal({ port: 0, udpDiscovery: false }); |
||||
}); |
||||
|
||||
it('should return TCP with port set via env var', () => { |
||||
expect(getTransporter({ port: '1234' })).to.deep.equal({ port: '1234', udpDiscovery: false }); |
||||
|
||||
expect(getTransporter({ port: ' 1234' })).to.deep.equal({ port: '1234', udpDiscovery: false }); |
||||
|
||||
expect(getTransporter({ port: ' 1234 ' })).to.deep.equal({ port: '1234', udpDiscovery: false }); |
||||
}); |
||||
|
||||
it('should throw if transporter set incorrectly', () => { |
||||
expect(() => getTransporter({ transporter: 'something' })).to.throw('invalid transporter'); |
||||
}); |
||||
|
||||
it('should return transporter if set correctly', () => { |
||||
expect(getTransporter({ transporter: 'monolith+nats://address' })).to.equal('nats://address'); |
||||
}); |
||||
}); |
||||
Loading…
Reference in new issue