Reputation: 9675
I'm trying to get the firebase emulator, to trigger cloud functions using pubsub publishing. The basic setup works outside of the cloud functions. When trying to connect the cloud function, no message ever appears.
I have the feeling, that I doing something fundamentally wrong.
Publish code:
import { PubSub, Topic } from '@google-cloud/pubsub';
const topicName = 'MyTopic';
const [taskTopic] = await pubsub.createTopic(topicName);
await this.taskTopic.publish(Buffer.from(msg));
"Manual" Subscription: works
[subscription] = await this.renderTaskTopic.createSubscription(subscriptionName);
subscription.on('message', (message) => {
console.log('Received message:', message.data.toString());
process.exit(0);
});
Subscription using cloud function: never gets called in the emulator
export const subscribeToRenderTask = functions.pubsub.topic(topicName)
.onPublish(async (message: functions.pubsub.Message) => {
console.log('subscribeToRenderTask', message.data);
}
The emalutor setup seems fine
functions: The Firebase Authentication emulator is not running, so calls to Firebase Authentication will affect production.
✔ functions[convert]: http function initialized (http://0.0.0.0:5001/puredio-development/europe-west3/convert).
✔ functions[subscribeToRenderTask]: pubsub function initialized.
┌─────────────────────────────────────────────────────────────┐
│ ✔ All emulators ready! It is now safe to connect your app. │
│ i View Emulator UI at http://0.0.0.0:8081 │
└─────────────────────────────────────────────────────────────┘
┌───────────┬────────────────┬───────────────────────────────┐
│ Emulator │ Host:Port │ View in Emulator UI │
├───────────┼────────────────┼───────────────────────────────┤
│ Functions │ 0.0.0.0:5001 │ http://0.0.0.0:8081/functions │
├───────────┼────────────────┼───────────────────────────────┤
│ Firestore │ 0.0.0.0:8080 │ http://0.0.0.0:8081/firestore │
├───────────┼────────────────┼───────────────────────────────┤
│ Pub/Sub │ 127.0.0.1:8085 │ n/a │
└───────────┴────────────────┴───────────────────────────────┘
Emulator Hub running at 127.0.0.1:4400
Other reserved ports: 4500
Upvotes: 1
Views: 2138
Reputation: 9675
RTFM: I needed to set the following env vars so that my tests could actually find the pub sub emulator
export PUBSUB_EMULATOR_HOST = 'localhost:8085'
export PUBSUB_PROJECT_ID = 'my-project'
Upvotes: 2